考虑这个应始终返回一个元素的xpath。
//div[@id='MyDiv123']/div[contains(@class, 'super')]
假设我们不再添加类为super的div。鉴于这些信息,我认为使用/div[contains(@class, 'super')]
不是一个好主意,因为如果将div[contains(@class, 'super')]
放在另一个元素中,xpath将会中断。
我们不应该使用//div[contains(@class, 'super')]
吗?
答案 0 :(得分:2)
我不喜欢将XPath用于可以编写为CSS选择器的定位器。
我觉得它简单得多#MyDiv123 > div.super
或只是
div.super
如果它在页面上是唯一的。
XPath contains()
是字符串匹配。下面的所有元素都将匹配您的XPath定位器,但它们都不匹配上面的CSS选择器。
<div class="super-duper" ...>
<div class="superior" ...>
<div class="abcsuperdef" ...>
......你明白了......
答案 1 :(得分:0)
编写 xpaths 时,没有定义最佳实践。这一切都归结为 xpath 的有效性。
我没有看到 xpath 的任何问题:
//div[@id='MyDiv123']/div[contains(@class, 'super')]
粗略有一些改进如下:
<div>
标记包含为 MyDiv123 。< / LI>
但 classname super 看起来似乎不是动态的。因此,您可以避免 xpath 中的关键字 contains 并将其重写为:
//div[@id='MyDiv123']/div[@class='super']