当前位置: 首页 > 面试题库 >

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

边明煦
2023-03-14
问题内容

我正在寻找类似的东西:

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

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

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

[固定]

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


问题答案:

您可以使用document.evaluate

计算XPath表达式字符串,并在可能的情况下返回指定类型的结果。

它是W3标准化的,并且完整记录在案

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

备用版本,使用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>


 类似资料:
  • [固定] 我正在使用jsoup在Java中完成它。这符合我的需要。

  • 问题内容: 现在我正在做: 有没有更有效的方法直接从Find(或其他搜索功能)中获取带有用户名的slice,而没有struct和range循环? 问题答案: MongoDB的结果始终是文档列表。因此,如果要获取值列表,则必须像以前一样手动将其转换。 使用自定义类型(源自) 另外请注意,如果您要创建自己的类型(从派生),则可以覆盖其取消编组逻辑,并仅从文档中“提取” 。 它看起来像这样: 然后将用户

  • 我需要通过xpath获取DOM元素。我从这个链接中得到了答案,在SeleniumWebDriver中有没有一种使用JavaScript通过XPath获取元素的方法?。在隐藏元素(显示:无)的情况下,此函数不会返回准确的结果。 在本例中,我尝试获取第一个div内容,但它显示了第二个div元素,它将隐藏元素带入计数。我还需要在计数中提取隐藏元素。在这方面需要帮助。

  • 问题内容: 我有一个这样的html代码段: html中此元素的唯一唯一标识是attribute ,因此我想使用 某种 Pythonselenium 方法 来定位它,如下所示: 我已经检查了selenium(python)文档以查找元素, 但是没有获得关于如何通过attr 定位此elem的线索。有没有在pythonselenium中找到该元素的明确方法? 问题答案: 您可以 通过xpath 获取它并

  • 我得到了如下html代码片段: 该元素在html中唯一唯一的标识是属性,因此我想使用类似以下的Python selenium方法来定位它: 我已经查看了selenium(python)文档以查找元素,但没有找到如何通过attr来定位此元素的线索。在python selenium中是否有明确的方法来定位这个元素?

  • 问题内容: 我正在编写小型且非常干燥的框架,该框架高度依赖元数据。我想知道是否有一种方法来获取方法参数名称,即给定一些方法 得到的字符串和。 我知道我可以注释参数,但是那不是很好。 问题答案: 我们为包含参数名称的String[]的方法创建了一个自定义注释。与必须注释每个单独的参数相比,此方法感觉易于管理。我们计划添加构建时检查,以确保带注释的参数名称的数量与参数的数量匹配,因为这是我们所需要的。