我有一个GWT应用程序,我正在尝试使用Selenium为其编写一些测试。
我正在使用 XPath 来识别页面上用于测试的元素。由于这些值是由 GWT 自动生成的并且可以更改,因此使用id
将不起作用。id
当我意识到我可以通过标签找到按钮时,事情开始进展顺利,如下所示:
//button[.='OK']
但是,当我开始运行多个测试时,我开始遇到问题。我意识到问题在于一旦由 Javascript 生成的 GWT 应用程序的所有不同“页面”都保留在 HTML 中的隐藏<div>
元素中。这意味着我的 Selenium 测试有时会单击隐藏按钮而不是当前视图中可见的按钮。
使用Firebug检查 HTML ,似乎 GWT<div>
通过添加元素display: none
的style
属性来隐藏元素。这意味着我可以找到所有隐藏的确定按钮,如下所示:
//div[contains(@style,'display: none')]//button[.='OK']
这将找到所有隐藏的 OK 按钮,即具有祖先的按钮,该祖先<div>
被隐藏display: none
在style
.
我的问题是:如何使用 XPath 仅查找可见的 OK 按钮?如何在 中找到没有祖先<div>
元素display: none
的按钮style
?