我正在寻找类似的东西:
getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
我需要使用JS获取元素的innerHTML(要在Selenium WebDriver / Java中使用它,因为WebDriver本身无法找到它),但是如何?
我可以使用ID属性,但并非所有元素都具有ID属性。
[固定]
我正在使用jsoup在Java中完成它。这符合我的需求。
您可以使用document.evaluate:
document.evaluate
计算XPath表达式字符串,并在可能的情况下返回指定类型的结果。
它是W3标准化的,并且完整记录在案:https : //developer.mozilla.org/zh- CN/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
Mozilla开发人员网络上也有出色的介绍:https : //developer.mozilla.org/en- US/docs/Introduction_to_using_XPath_in_JavaScript#document.evaluate
备用版本,使用XPathEvaluator:
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>