在XPath以外的selenium webdriver中找到元素的最佳方法是什么?

时间:2015-05-07 12:08:54

标签: java selenium xpath selenium-webdriver

我正在测试的应用程序正在快速开发,并且新功能不断添加,需要更改测试XPath。因此,之前成功的selenium脚本在XPath发生变化时失败了。有没有可靠的方法来定位元素(永远不会改变)?仅供参考,我想使用ID,但我的应用程序没有每个元素的ID,因为不建议在代码中提供ID。

3 个答案:

答案 0 :(得分:1)

如果你不能对不断变化的界面施加@id纪律,可以选择使用CSS selectors

编写更强大的XPath的另一种选择:

  1. 明智地使用descendent-or-self轴(//):

    而不是/some/long/and/brittle/path/uniquepart使用//uniquepart//uniquepart/further/path来绕过可能会改变的情况。

  2. 不要过度指定标签匹配。

    使用case-insensitive contains(),并尝试匹配可能在界面更改中保持不变的标签的关键部分。

答案 1 :(得分:0)

我可以想到的另一种方法是,您可以将页面元素加载到DOM中并使用DOM元素导航。虽然在元素上有id是一个好习惯。如果必须使用xpath方式,则最好分割路径以分别保持公共路径并根据需要添加叶元素。在某种程度上,xpath中的更改会触发测试失败,这是捕获更改的一个很好的指示。

答案 2 :(得分:0)

我觉得以下是选择selenium中元素的层次结构 1.id
2.class name
3.name
4.css
5.xpath
6.链接文本
7.Partial链接文本
8.tag名称
如果更改DOM结构,您可以尝试使用text()contains()等功能。以下链接说明了上述功能的基本原理  http://www.guru99.com/using-contains-sbiling-ancestor-to-find-element-in-selenium.html
可以参考以下链接来编写可靠的定位器
https://blog.mozilla.org/webqa/2013/09/26/writing-reliable-locators-for-selenium-and-webdriver-tests/
希望这会对你有所帮助。