我有一个使用GWT编写的应用程序,现在我想使用Selenium编写一些测试。
我使用XPath来识别页面上的元素进行测试。使用id
无法工作,因为id
值是由GWT自动生成的并且可能会更改。当我意识到可以按标签查找按钮时,情况开始变得顺利:
//button[.='OK']
然而,当我开始运行多个测试时,遇到了问题。我意识到问题在于 GWT 应用程序生成的不同“页面”都保留在 HTML 中的隐藏
<div>
元素中。这意味着我的 Selenium 测试有时会点击当前视图中不可见的隐藏按钮。使用 Firebug 检查 HTML,看起来 GWT 通过将
display: none
添加到它们的 style
属性中来隐藏 <div>
元素。这意味着我可以按如下方式找到所有隐藏的确定按钮://div[contains(@style,'display: none')]//button[.='OK']
这将找到所有隐藏的“确定”按钮,即那些祖先元素
<div>
具有style
中的display: none
属性而被隐藏的按钮。
我的问题是:如何使用XPath仅查找可见的“确定”按钮?如何查找没有祖先元素<div>
具有style
中的display: none
属性的按钮?
class="display: none;"
(加入空格使其不同). - ReactiveRavendisplay: none;
,从而使该元素不可见,但仍与此XPath表达式匹配。 - acdcjuniordisplay:none
,另一个也是同样的限制,但是用的是带空格的display: none
。 - Dave Yarwood