Java 如何查找孙子元素的Xpath

Java 如何查找孙子元素的Xpath,java,selenium,xpath,Java,Selenium,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条款感到困惑。任何帮助都将不胜感激。谢谢。根据

我是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条款感到困惑。任何帮助都将不胜感激。谢谢。

根据

.-选择当前节点

因此,您应该能够相对于上一个元素搜索下一个元素,例如:

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]"));
WebElement myElement = driver.findElement(By.xpath("//ul[contains(text(),'element text here')]"));
我建议去掉这个div[3],li[16]等等,因为即使是很小的改变也会破坏你的表达和测试。请注意,您可以使用like,这样您的表达式将更加健壮和可靠

另外,这个ul[16]看起来不太好,标签代表的是你,所以我的期望是你不应该使用索引,而是坚持元素文本,比如:

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]"));
WebElement myElement = driver.findElement(By.xpath("//ul[contains(text(),'element text here')]"));

其中是可用于文本部分匹配的。您应该将xml代码的相关部分与预期输出一起粘贴。欢迎使用堆栈溢出!请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。请参阅帮助页面以澄清此问题。谢谢你,Dmitri T,这很有效,感谢你的帮助。我将研究你的建议,使其更加可靠和可靠。我相信我需要一段时间才能做到这一点。再次感谢。