#java #selenium-webdriver
Вопрос:
Я очень новичок в Селене.
Я пытаюсь найти кнопку Проверить (см. Ниже) и не использовать xpath.
lt;div class="order"gt; lt;a style="float: left;" href="#143207" class="VoidDoc ui-button ui-corner-all ui-widget" role="button"gt; Void lt;/agt; lt;a style="float: left;" href="validatedocumentation.php?documentId=143207amp;amp;origin=viewreferral.phpamp;amp;OrderId=836829" class="ui-button ui-corner-all ui-widget" role="button"gt; Validate lt;/agt; lt;a class="signDocBehalf ui-button ui-corner-all ui-widget" style="float: left;" href="#143207#20263#836829" role="button"gt;Signlt;/agt; lt;a style="float: left;" href="editdocumentation.php?documentId=143207amp;amp;origin=viewreferral.php" class="ui-button ui-corner-all ui-widget" role="button"gt; Edit lt;/agt; lt;/divgt;
Я попытался посмотреть по имени класса (к сожалению, не уникальному) и тексту кнопки («Проверить»):
.....Driver.findElement(By.xpath("//a[@class='ui-button ui-corner-all ui-widget' and text()='Validate']")).click();
также я пытался
.....Driver.findElement(By.xpath("//div[@class='ui-button ui-corner-all ui-widget' and text()='Validate']")).click();
получение ошибки:
no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='ui-button ui-corner-all ui-widget' and text()='Validate']"} (Session info: chrome=94.0.4606.81)
Я предполагаю , что это потому "lt;agt;" is nested in "lt;divgt;"
, что поправьте меня, если я ошибаюсь.
Как было бы правильно идентифицировать эту кнопку.
Пожалуйста, дайте мне ваш добрый совет.
Ответ №1:
Вы были почти правы.
xpath, который вы используете
//a[@class='ui-button ui-corner-all ui-widget' and text()='Validate']
это частично правильно. Для проверки текста есть конечные пробелы, поэтому вам придется использовать contains
Используйте этот xpath :
//a[@class='ui-button ui-corner-all ui-widget' and contains(text(),'Validate')]
PS : Пожалуйста, проверьте в dev tools
(Google chrome), есть ли у нас уникальная запись HTML DOM
или нет.
Шаги для проверки:
Press F12 in Chrome
-gt; перейдите в gt; element
раздел -gt; сделайте gt; CTRL F
-gt; затем вставьте gt; xpath
и посмотрите, element
выделяется ли ваш желаемый 1/1
соответствующий узел.
Поскольку вы упомянули, что не хотите использовать xpath, не знаете, почему ?
Если это так, то, пожалуйста, используйте css-селектор следующим образом :
a.ui-button.ui-corner-all.ui-widget[role='button'][href^='validatedocumentation.php?']
Комментарии:
1. Спасибо cruisepandey, Этот элемент: //a[@class=’ui-кнопка ui-угловой-весь пользовательский интерфейс-виджет’ и содержит(текст(),»Проверка»)] работает. Очень признателен.