我是 Selenium 的新手,很难弄清楚如何编写 xpath。我能够找到以下 xpath 的元素://*[@id="validation-item-0"]/div[3]/div/div[2]/ul/li[16]我如何在java中编写代码以根据上面的xpath找到以下xpath?//*[@id="validation-item-0"]/div[3]/div/div[2]/ul/li[16]/ul[1]/li/ul/li[4]作为新手,我对 ul 和 li 项目真的很困惑。任何帮助,将不胜感激。谢谢。
1 回答
冉冉说
TA贡献1877条经验 获得超1个赞
根据XPath 语法文章
.
- 选择当前节点
因此,您应该能够搜索相对于前一个元素的下一个元素,例如:
WebElement element1 = driver.findElement(By.xpath("//*[@id='validation-item-0']/div[3]/div/div[2]/ul/li[16]")); WebElement element2 = element1.findElement(By.xpath("./ul[1]/li/ul/li[4]"));
我建议摆脱这个div[3]
,li[16]
等等,因为即使是轻微的标记变化也会破坏你的表达和测试。 请注意,您可以像后代一样使用XPath 轴,这样您的表达会更加健壮和可靠
另外,这ul[16]
看起来不太好,<ul>
标签代表无序列表,所以我的期望是你不应该使用索引,而应该坚持使用元素文本,例如:
WebElement myElement = driver.findElement(By.xpath("//ul[contains(text(),'element text here')]"));
其中contains()
是可用于文本部分匹配的XPath 函数
添加回答
举报
0/150
提交
取消