Функция isEnabled () в селене всегда возвращает true, когда веб-драйвер работает на сайтах, разработанных с использованием Angular 6 - PullRequest
0 голосов
/ 17 января 2019

Функция isEnabled () в селеновом веб-драйвере всегда возвращает true, когда веб-драйвер работает на сайтах, разработанных с использованием Angular 6. Все ответы, относящиеся к этой теме, которые я обнаружил, говорили о том, что отключенный не является атрибутом, а вместо этого пишется в классе кнопки. Проверьте эту ссылку для подробного описания.

Кнопка включена или отключена: как веб-драйвер принимает решение?

Но код веб-сайта, над которым я работаю, не написан в классе. Вот код моего сайта.

<button _ngcontent-c61="" class="push-right-sm mat-raised-button mat-primary" color="primary" mat-raised-button="" disabled="">
<span class="mat-button-wrapper">SAVE</span><div class="mat-button-ripple mat-ripple" matripple=""></div><div class="mat-button-focus-overlay"></div></button>

Как проверить, включен этот элемент или нет?

Редактировать: вот как я проверяю это через мой код.

WebElement button = driver.findElement(By.xpath("//button/span[contains(text(),'SAVE')]"));
if(button.isEnabled()){ System.out.println("The button is enabled."); }

1 Ответ

0 голосов
/ 31 января 2019

Ваш локатор находит SPAN внутри BUTTON, а не саму кнопку. Попробуйте

//button[./span[.='SAVE']]

ПРИМЕЧАНИЕ: вам не нужно использовать contains() в этом случае, поскольку весь текст «СОХРАНИТЬ», поэтому я удалил contains().

Это в основном читается как находка BUTTON с SPAN, в котором содержится текст, равный "SAVE". Я проверил его на предоставленном вами HTML, и он работает.

...