Найдите веб-элемент (кнопку) по классу и имени

#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-угловой-весь пользовательский интерфейс-виджет’ и содержит(текст(),»Проверка»)] работает. Очень признателен.