我正在寻找类似的东西:
getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
我需要使用 JS 获取元素的innerHTML(在 Selenium WebDriver/Java 中使用它,因为 WebDriver 本身找不到它),但是如何呢?
我可以使用 ID 属性,但并非所有元素都有 ID 属性。
您可以使用document.evaluate
:
计算 XPath 表达式字符串并返回结果
如果可能的话指定类型。
It is w3-标准化 https://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator-evaluate并完整记录:https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
console.log( getElementByXpath("//html[1]/body[1]/div[1]") );
<div>foo</div>
https://gist.github.com/yckart/6351935 https://gist.github.com/yckart/6351935
mozilla 开发者网络上也有一个很棒的介绍:https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#document.evaluate https://developer.mozilla.org/en-US/docs/Introduction_to_using_XPath_in_JavaScript#document.evaluate
替代版本,使用XPathEvaluator
:
function getElementByXPath(xpath) {
return new XPathEvaluator()
.createExpression(xpath)
.evaluate(document, XPathResult.FIRST_ORDERED_NODE_TYPE)
.singleNodeValue
}
console.log( getElementByXPath("//html[1]/body[1]/div[1]") );
<div>foo/bar</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)