【问题标题】:Selenium WebDriver - Selecting webelements with findElements(By.xpathSelenium WebDriver - 使用 findElements(By.xpath) 选择 webelements
【发布时间】:2017-04-13 18:23:23
【问题描述】:

我有一个网页,我必须从其中从网络元素中提取一堆名称。我的想法是首先使用“findElements(By.xpath...”) 提取所有这些元素,如下所示:

List<WebElement> someElements = driver.findElements(By.xpath("XPATH???"));

所有这些元素都有这样的 xPath 模式:

/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div[1]/div[1]/h2/a
/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div[2]/div[1]/h2/a
/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div[3]/div[1]/h2/a
/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div[4]/div[1]/h2/a
/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div[5]/div[1]/h2/a

如您所见,唯一的变化是倒数第二个 div 正在发生变化。 我的问题是如何编写这行代码来填充 webelement 列表,By.xPath() 中有什么内容?

非常感谢!

【问题讨论】:

    标签: java selenium webdriver xpath-2.0


    【解决方案1】:
    List<WebElement> divs = driver.findElements(By.xpath("/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div"))
    

    【讨论】:

      【解决方案2】:

      修改代码部分如下-

      List<WebElement> someElements = driver.findElements(By.xpath("/html/body/div[1]/div/div/div[11]/div[1]/div[6]/div/div[1]/h2/a"));
      

      【讨论】:

      • 你现在已经修复了它............在你有 div[1] 硬编码而不是通用 div 条目之前
      【解决方案3】:

      我不完全确定你想在这里实现什么。

      如果你想要所有的 div:

      List<WebElement> someElements = driver.findElements(By.xpath("/html/body/div[1]/div/div/div/div[1]/div[6]/div[*]/div[1]/h2/a"));
      

      如果不是,请向我提供您尝试获取的实际元素的示例。

      【讨论】:

      • 感谢 Stratos Ion!这解决了它,只需对所有这些 div 使用 *。现在可以了!!!
      • 很高兴它成功了,别忘了把它标记为正确答案:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2019-06-03
      • 2013-01-16
      相关资源
      最近更新 更多