在xpath定位器中使用DOM标签是一种好习惯吗?

时间:2019-05-09 11:36:09

标签: java selenium dom xpath

在我的测试案例中,我经常使用更多的XPath定位器来检查文本属性。例如,

public By label(String text) {
    return By.xpath("//label[contains(text(),'"+text+"')]");
}

在测试用例中,我将其用作:

webUI.verifyElementVisible(page.label("message"));

我正在使用标签,div,输入(占位符),跨度等进行此操作。

这被认为是好的做法吗?

将来这样做的不利之处是什么?

这大大缩短了我的开发时间,使我的页面对象存储库更加简洁明了。

2 个答案:

答案 0 :(得分:3)

关键点:由于XPath的简单性,速度和性能,强烈建议在XPath上使用CSS选择器。

记住:每种浏览器中的Xpath引擎都不同,因此使其不一致。

特别是,IE没有本机的xpath引擎,因此selenium会注入自己的xpath引擎以实现其API的兼容性。因此,我们失去了使用WebDriver固有的本机浏览器功能的优势。

因此,较大的受众群体建议在Xpath上使用CSS。

示例:标签(文本)的CSS选择器:label [for = city]

<label for="city">New York</label> 

答案 1 :(得分:2)

那是我使用Xpath的原因之一(另一个原因是向后DOM树遍历)。我通常会尽可能使用CSS选择器,但是当在页面上查找特定文本时,Xpath-element [contains(。,“ text”)]是我的首选。

例如,我认为这是检查动态创建的表元素的一种非常优雅的方法。