java - Selenium WebDriver 中使用 XPath 从子节点遍历到祖先节点

标签 java selenium xpath

我尝试使用 xpath 从子节点遍历到祖先节点,但它不起作用。

WebElement menuItemText = driver.findElement(By.xpath("//span[contains( text(), '" + itemTitle + "')]"));
menuItemText = menuItemText.findElement(By.xpath(".//parent::*[@attribute='onclick']"));
menuItemText.click();

节点是:

<div onclick="something()">
  <div onclick="myFunction()">
    <div>
      <div>
        <span>Text!</span>
      </div>
    </div>
  </div>
</div>

但是,函数名称非常复杂,每个节点都有奇怪的唯一 ID。并不是说它太重要,而是我想将 DOM 从子节点向上遍历到包含 onclick 属性的父/祖先节点。我想在遍历 DOM 时获得第一个 onclick 。所以, onclick=myFunction() 就是我想要得到的。

这可能吗?我尝试做一个 while() 循环,它工作了一次,但不再工作了。

最佳答案

您可以使用祖先关键字直接从子节点访问祖先元素,如下所示:

//span[contains(text(),\"Text\")]/ancestor::div[@onclick]

关于java - Selenium WebDriver 中使用 XPath 从子节点遍历到祖先节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60292680/

相关文章:

java - 如何在 Android 模拟器上访问现有的 sqlite 数据库?

java - 如何匹配来自不同类的两个页面对象文本?

python - selenium 打开错误的基于 Firefox 的浏览器

javascript - Selenium 没有捕获 JavaScript 错误

javascript - 在 JavaScript XPath 查询中访问节点集

java - @Transactional 在@Service 中不起作用

java - JPQL 测试值是否在数组中

java - 在 Netbeans 中添加一个类。

xpath - 使用XPath选择值中带有某个token的元素

python - 我正在尝试计算绝对 Xpath 一个作为子元素的添加按钮