猿问

如何找到孙(?)元素的Xpath

我是 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 项目真的很困惑。任何帮助,将不胜感激。谢谢。


人到中年有点甜
浏览 96回答 1
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 函数
随时随地看视频慕课网APP

相关分类

Java
我要回答