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