node.js - 使用 WebdriverJS 选择父元素

标签 node.js xpath selenium-webdriver webdriver

我正在尝试创建一些脚本,这些脚本需要使用随机 ID 移动大量动态 HTML。它们需要获取元素的父元素 - 但我不确定如何在 WebdriverJS 中实现这一点。

如果我通过控制台访问我想要的元素,我可以执行以下操作来获取它;

document.querySelector('span[email="noreply@example.com"]').parentNode.parentNode

WDJS 有办法做到这一点吗?我看过了,看不到任何明显的东西——这特别是我遇到问题的 parent 的东西。我发现 xPath 可能是一个可能的解决方案,但我不确定以前从未使用过它的语法。

提前致谢!

最佳答案

我不知道WebDriverJS的语法。但 XPath 如下所示,您需要一种方法将其放入某处。

这基于您的 CSS 选择器,因此如果需要,请显示 HTML。

.//span[@email='noreply@example.com']/../..

例如,如果您有这样的 HTML

<div>
<div>
<span email="noreply@example.com">Contact me</span>
</div>
</div>

可以避免使用..上去。

.//div[./div/span[@email='noreply@example.com']]

如果您要查找更多级别,另一种方便的方法是使用 XPath Axes 中的 ancestor 。 另外,正如 @sircapsalot 提出的,CSS 选择器规范不支持父级选择,因此 XPath 是唯一的方法,除非您注入(inject) JS。

关于node.js - 使用 WebdriverJS 选择父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21340230/

相关文章:

java - 断言等于将字符串和数组列表与 Excel 中的文本数据进行比较

javascript - 为什么 WebdriverIO 对从未使用过的 webelement 发出 POST 'element' 请求?

JavaScript 将对象添加到数组并进行迭代

mysql - 当我查询 MySQL 并尝试通过 AWS SES 发送电子邮件时,Node Lambda 超时

node.js - 通过 Node pg连接到azure灵活的postgres服务器

node.js - 如何设置 Node http代理来拦截特定的请求/响应?

xml - XPath 中的元素计数

python - 确认动态 html 表格中的文本后单击复选框

xml - xpath - if else 结构

JavascriptException : Message: javascript error: arguments[0]. click is not a function error using arguments[0].click 通过 Selenium 和 Python