我尝试使用 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/