Невозможно нажать две кнопки продолжения SPAN с Selenium WebDriver - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь нажать две кнопки со следующим HTML-кодом

1

 <span translate="Resources.AddOns.TravelInsurance.Button_ContinueBooking" class="ng-scope">Continue Booking</span>
 The Xpath = //*[@id="cont_to_ins"]/span
  1. <button wn-validation-dom="prepaidcards-details" class="orange-btn btn btn-sm bold ng-scope" ng-if="!areOtherAddOnsAfterPrepaidCardsIndexAvailableInAccordion()" id="cont_to_ins" ng-click="continueBooking()"><span translate="Resources.AddOns.PrepaidCards.Button_ContinueBooking" class="ng-scope">Continue Booking</span> <i class="material-icons "></i></button>

Xpath =

//*[@id="cont_to_ins"]

Я пробовал несколько кодов, но получаю сообщение об ошибке, что кнопка не может быть нажата.

Пожалуйста, помогите с кодом, чтобы найти этот элемент и нажмите, чтобы перейти к следующей странице

driver.findElement(By.xpath("//span[contains(text(), 'Continue Booking')])[1]/following::button[1]")).click();
   log.debug("Click Continue ");




WebElement elementa=  driver.findElement(By.xpath("//span[text()='Continue Booking']/"));   
    JavascriptExecutor executore = (JavascriptExecutor) driver;
    executore.executeScript("arguments[0].click();", elementa);

org.openqa.selenium.InvalidSelectorException: неверный селектор: невозможно найти элемент с выражением xpath // span [содержит (текст (), «Продолжить бронирование»)]) [1] / после :: кнопка [1] из-за следующего ошибка: SyntaxError: не удалось выполнить «оценку» для «документа»: строка '// span [содержит (text (),' Продолжить Бронирование ')]) [1] / follow :: button [1]' не является допустимым выражением XPath. (Информация о сеансе: chrome = 74.0.3729.157) (Информация о драйвере: chromedriver = 74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-ссылки / отраслевые головки / 3729 @ {# 29}), платформа = Windows, NT 10.0.17763 x86_64) (ВНИМАНИЕ: сервер не предоставил информация о трассировке стека) Длительность команды или время ожидания: 0 миллисекунд Для документации об этой ошибке, пожалуйста, посетите: https://www.seleniumhq.org/exceptions/invalid_selector_exception.html Информация о сборке: версия: «неизвестно», ревизия: «неизвестно», время: «неизвестно» Системная информация: хост: 'WN-HQ-LT-DEV-42', ip: '10 .10.11.250 ', os.name: «Windows 10», os.arch: «amd64», os.version: «10 .0», java.version: '1.8.0_211' Информация о драйвере: org.openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 74.0.3729.6 (255758eccf3d24 ..., userDataDir: C: \ Users \ ADEYIN ~ 1.ALA \ AppDa ...}, cssSelectorsEnabled: true, databaseEnabled: false, goog: chromeOptions: {debuggerAddress: localhost: 64341}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: обычный, платформа: XP, имя платформы: XP, прокси: прокси (), вращающийся: false, setWindowRect: true, strictFileInteractability: false, takeHeapSnapshot: true, takeScreenshot: true, тайм-ауты: {неявный: 0, pageLoad: 300000, скрипт: 30000}, непредвиденное оповещение, поведение: игнорировать, unhandledPromptBehavior: ignore, версия: 74.0.3729.157, webStorageEnabled: true} Идентификатор сеанса: aebe53b2f0ce483db0acf2034848ecd9 *** Информация об элементе: {Using = xpath, value = // span [содержит (текст (), «Продолжить бронирование»)]) [1] / следующий :: button [1]}

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Вы не написали правильный XPath

driver.findElement (By.xpath (" (// span [содержит (текст (), 'Продолжить бронирование')]) [1] / следующий:: кнопка [1] ")) .click ();log.debug («Нажмите Продолжить»);

0 голосов
/ 20 мая 2019

Используйте WebdriverWait для обработки динамического элемента и после Xpath.

WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath('//button[@id="cont_to_ins"]/span[contains(.,"Continue Booking")]')));
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...