У меня есть приложение GWT , для которого я пытаюсь написать несколько тестов, используя Selenium .
Я использую XPath для идентификации элементов на странице для тестов. Использование id
не будет работать, поскольку значения id
автоматически генерируются GWT и могут изменяться. Все стало хорошо, когда я понял, что могу найти кнопки по их ярлыкам следующим образом:
//button[.='OK']
Однако, когда я начал выполнять несколько тестов, у меня начались проблемы. Я понял, что проблема заключается в том, что все различные «страницы» приложения GWT, сгенерированные JavaScript, остаются в HTML в скрытых <div>
элементах. Это означало, что мои тесты Selenium иногда нажимали скрытые кнопки вместо кнопки, видимой в текущем представлении.
Изучая HTML с помощью Firebug , кажется, что GWT скрывает элементы <div>
, добавляя display: none
к их атрибуту style
. Это означает, что я могу найти все скрытые кнопки ОК следующим образом:
//div[contains(@style,'display: none')]//button[.='OK']
При этом будут найдены все скрытые кнопки ОК, то есть кнопки, у которых есть предок <div>
, который скрыт наличием display: none
в style
.
Мой вопрос: как мне использовать XPath, чтобы найти только видимые кнопки ОК? Как найти кнопки, у которых нет элементов-предков <div>
с display: none
в style
?