Xpath选择器的区别:优点和缺点

时间:2015-12-14 10:36:59

标签: selenium xpath

我有两个xpath选择器找到完全相同的元素,但我想知道哪个更好,从代码,执行速度,可读性观点等。

第一个Xpath:

//*[@id="some_id"]/table/tbody/tr[td[contains(., "Stuff_01")]]//ancestor-or-self::td/input[@value="Stuff_02"]

第二个Xpath:

//tr[td[@title="Stuff_01"]]//ancestor-or-self::td/input[@value="Stuff_02"]

例如,如果页面的代码将被更改,例如某些"tbody"将被移动,而第一个将无法工作,那么它是真的吗? 那么代码的哪种变体更好,为什么呢?

我希望得到精心解答,因为这对工作流程至关重要。

1 个答案:

答案 0 :(得分:2)

XPath可能都不是理想的。看到目标HTML和选择目标的描述将需要决定或提供另一种选择。

此外,与所有表现事项一样,先测量。

也就是说,性能不太重要,尤其是在进一步限制选择空间之前,使用@id或其他锚点来修改缩小的子树。

例如,如果文档中只有一个elem id 1234 //elem[@id="1234"]/rest-of-xpath,则使用elem,您已经淘汰了本文档的其余部分作为性能/可读性/稳健性问题。只要table//td下方的子树相对温和(通常会是这样),您就可以解决这些问题。

此外,是的,tbody是一个很好的方式来抽象是否存在comm