一尘不染

有没有一种方法可以使用Selenium WebDriver中的JavaScript通过XPath获取元素?

selenium

我正在寻找类似的东西:

getElementByXpath(//html[1]/body[1]/div[1]).innerHTML

我需要使用JS获取元素的innerHTML(要在Selenium WebDriver /
Java中使用它,因为WebDriver本身无法找到它),但是如何?

我可以使用ID属性,但并非所有元素都具有ID属性。

[固定]

我正在使用jsoup在Java中完成它。这符合我的需求。


阅读 268

收藏
2020-06-26

共1个答案

一尘不染

您可以使用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

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>
2020-06-26