Появилась опять проблема по теме. Выполняю проверку кнопки isEnabled()
через дебаг:
аттрибут disabled присутствует, но в лог выводит совершенно другое:
Вроде обращаюсь к элементу правильно. В чем может быть проблема? Спасибо.
Появилась опять проблема по теме. Выполняю проверку кнопки isEnabled()
через дебаг:
И имеет на это полное право - атрибут disabled
невалидный для тэга div
, и никоим образом не лишает его “кликабельности”.
Тогда каким образом можно выполнить проверку на кликабельность элемента?
Такой способ будет “легален”?:
public void waitEnableButton(WebElement element){
for(int i = 0; i<10; i++){
String atr = element.getAttribute("disabled");
if(!(atr==null)){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
break;
}
}
}
Чего вы так прицепились к этому атрибуту? Может его UI-щики используют для своих экзотических целей. В Selenium уже вшит встроенный expected condition для проверки элемента на кликабельность. Да и что за велосипеды с циклами и слипами? Как же WebDriverWait?
Не работает expected condition для Div, кликает кнопку даже если она не активна, просто так бы не спросил.
На скрине у вас кнопка активна, но атрибут disabled. Вы проверяете isEnabled() на активной кнопке, что возвращает true, что логично. Кидайте скрин верстки c открытым style и неактивной кнопкой, ибо пока я не вижу, чтобы были соблюдены все условия для ответа на ваш вопрос.
Надеюсь это то, что вы попросили:
На скрине кнопки активны или задизейблены? Как у вас вообще визуально отличаются активные и задизейбленные кнопки между собой? И поставьте Firebug / Firepath. Хотелось бы увидеть результаты поиска по вашему локатору с подсвеченным элементом в верстке, дабы отбросить все сомнения.
П.С. И вообще странно то, что у выделенного элемента display : none
стоит.
Различие видно визуально. Пример привел на скринах ниже с подсветкой локатора.
Кнопки активны:
Кнопки не активны:
Интереса ради, что вам выдаст FirePath на CSS .btn[disabled]
для активных и неактивных кнопок?
Не активные кнопки:
Активные кнопки:
P.S. теперь вы понимаете почему я “мусолю” эту тему?
Ну так все верно. Если кнопки активны, поиск по .btn[disabled]
ничего не даст. Если сделать более точный поиск, к примеру, по .buttonbar-container.btn[disabled]
, то, наверняка вы получите всего 3 нода - целевые кнопки. Если вы 100% уверены, что изначально они у вас disabled, то почему бы не использовать invisibilityOfElementLocated, чтобы подождать, пока элемент не исчезнет из DOM? Ну технически кнопки то не исчезнут, просто condition вернет true, если findElement бросит эксепшен.
Я предполагал что можно было использовать этот метод, а разве invisibilityOfElementLocated проверит все локаторы на наличие disabled, а не только первый по списку?
Это уже нюансы. Вы можете применить это условие только к одной, нужной вам, кнопке. Кликать то вы будете не по всем сразу. Так что локатор уж сами подбирайте. Суть была как раз в выборе подходящего wait condition.
просто все равно придется на каждую кнопку делать отдельную проверку (они же все потом будут использоваться в дальнейшем), да и выглядеть это будет “копипастом”. Спасибо за совет (P.S. буду благодарен если ответите в теме на мое сообщение).