【问题标题】:XPath for last selected element via browser console?通过浏览器控制台最后选择的元素的 XPath?
【发布时间】:2020-08-28 12:49:54
【问题描述】:

我有一个 XPath:

$x(("//div[@class='ag-header-row']"))[1]

这给了我一个divs 的数组。 最后的[1] 是必要的,因为这个类还有其他行。

我知道[last()],但不确定在哪里插入。

如何修改 XPath 以选择最后一个 div

这里是元素截图

【问题讨论】:

  • 试试("//div[@class='ag-header-row']")[count("//div[@class='ag-header-row']")]
  • 感谢@JaSON 回复我在 Google 控制台中尝试过,但出现“未定义计数”错误。我希望使用 [last()] 因为我也想使用 [first()]
  • XPath 中没有first 这样的运算符。试试"(//div[@class='ag-header-row'])[last()]"
  • 如果您查看我的有效路径并返回一个 div 数组,则末尾有一个 [1]。 [1] 是获取数组所必需的。您的建议不起作用,因为它没有 [1]。我不知道如何添加 [last()]
  • @JaSON:是的,正如我已经mentioned in my answer below 一样,[1] 被应用在 JavaScript 上下文中(在浏览器控制台中),而不是 XPath。

标签: javascript html xml selenium xpath


【解决方案1】:

您对 XPath 表达式的调用,

$x(("//div[@class='ag-header-row']"))[1]

表示选择所有具有给定 class 属性值的 div 元素,并且在 JavaScript 中,XPath 之外second 之一(因为 JavaScript 数组从 0 开始,而不是像 XPath 那样从 1 开始)。

您不能将[1] 替换为[last()],因为last() 是一个XPath 函数,而不是一个JavaScript 函数。

如果你想要最后一个这样的 div 移动 [last()] 到 XPath:

$x("(//div[@class='ag-header-row'])[last()]")

另见:

【讨论】:

  • [1] 是选择正确行所必需的。我感兴趣的行是该课程的第二行。然后我想要该行中的最后一个元素
  • 使用 HTML 或 XML 的简化示例创建minimal reproducible example作为文本,从不作为图像来传达您的要求 - 您的散文描述不清楚。
【解决方案2】:

我能够通过合并对父元素的引用来解决

$x("//div[@class='ag-header-container']//div[@class='ag-header-row']/div[last()]")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多