java - 在 Selenium Web 驱动程序中使用 Parent::* 轴时出现问题

标签 java xpath selenium webdriver

我正在尝试使用通配符在 selenium 中向上导航 DOM,使用类似这样的东西......

    ArrayList<WebElement> list = (ArrayList<WebElement>) driver.findElements(By.xpath("//div[contains(text(),'div_text')]/parent::*]"));

尝试获取具有“div_text”的 div 的所有父元素。这似乎只返回直接父级,而不是所有父级。我需要在 DOM 上移动可变数量的节点。

一旦我得到列表,我计划迭代

for(WebElement e: list)
   if(e.getTagName().equals("table") && e.getAttribute("class").equals("blah")
       e.click();

同意这不是最有效的方法,而是更复杂的 xpath 表达式,例如

driver.findElements(By.xpath("//div[text()='title']/[name(parent::*) = 'table'"));

似乎不适用于网络驱动程序。

感谢您对此的任何见解。

最佳答案

如果我正确理解你的问题,你想要的是祖先而不是 parent 。

XPath Axes

ancestor: Selects all ancestors (parent, grandparent, etc.) of the current node parent
parent: Selects the parent of the current node

尝试 //div[text()='title']/ancestor::table 作为表祖先

关于java - 在 Selenium Web 驱动程序中使用 Parent::* 轴时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16576344/

相关文章:

java - 如何检查两个日期是否在一个时间段(间隔)之间?

python - 无法使用 xpath 或 css 选择器在 div 中找到元素

Java 与 XPath 和 TagSoup

xml - 如何在perl中使用xpath分割xml?

ruby - 从 HTML 中抓取轨道数据?

windows - 使用参数 : {"desiredCapabilities": {"browserName" :"chrome" ,"platform" :"ANY" with Selenium and PHPUnit 为 http POST 到/ session 抛出 curl 错误

python - 循环访问 BeautifulSoup 中的元素,但仅输出该元素的子元素

java - 删除 cookie 时 SonarQube 违规

java - 同步方法的 weakValue 映射引用中的内存泄漏

java - 使用相同的对象作为 HashMap 中的键和值