首页 > 解决方案 > 如何定位具有属性 xpath="1" 和 xpath="2" 的子节点

问题描述

我正在尝试定位具有两个子节点的 Web 元素:

<div _ngcontent-c2="" class=" " title="Twelve (Start date is 31| 0 user)" xpath="1"></div>
<div _ngcontent-c2="" class=" " title="Twelve (Start date is 31| 0 user)" xpath="2"></div>

我试图//div[contains(@title,'Twelve (Start date is 31| 0 user)')][1]获得第一个元素,但对我不起作用。

标签: seleniumselenium-webdriverxpathxpath-2.0xpath-1.0

解决方案


xpath="1"

xpath="1"属性是xpath v1.0的参考

xpath="2"

xpath="2"属性是xpath v2.0的参考

Selenium支持XPath v1.0

包括父标签在内的更多outerHTML将帮助我们构建更规范的答案。此外,您正在使用的语言绑定的信息也丢失了。但是,要定位第一个元素,您需要为所需的visibilityOfElementLocated()诱导WebDriverWait并且您可以使用以下可以使用以下 xpath:

  • 爪哇

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[contains(@title,'Start date is 31') and @xpath='1']")));
    
  • 蟒蛇

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@title,'Start date is 31') and @xpath='1']")))
    

在这里您可以找到关于XPath 版本(1.0、2.0、3.1)之间有什么区别的详细讨论


推荐阅读