【问题标题】:XPath Find full HTML element ID from partial IDXPath 从部分 ID 中查找完整的 HTML 元素 ID
【发布时间】:2009-12-15 13:25:41
【问题描述】:

我希望编写一个 XPath 查询,以从我构建的部分 ID 中返回完整的元素 ID。有谁知道我怎么能做到这一点?从以下 HTML(我已将其删除以删除工作特定内容)中,我希望从将 f41_txt 放入我的查询中提取 f41_txtResponse。

<input id="f41_txtResponse" class="GTTextField BGLQSTextField2 txtResponse"  value="asdasdadfgasdfg" name="f41_txtResponse" title="" tabindex="21"/>

干杯

【问题讨论】:

  • 您所说的“完整元素 ID”是什么意思?你能举个例子吗?

标签: xpath


【解决方案1】:

你可以使用 contains 来选择元素:

//*[contains(@id, 'f41_txt')]

【讨论】:

  • 通过我们生成网页的方式,这是检索我正在寻找元素 ID 的所有内容。
  • //*[contains(@id, 'f41_txt')] 将选择您必须对其进行迭代的标签列表,并为每个标签选择 id 属性。您可以使用 count(//*[contains(@id, 'f41_txt')]) 来获取总数。
  • 这不是最好的方法。在您的帮助下,我已经回答了我自己的问题。
  • 赞美主,感谢 thomas jung 我记得你总是需要 @ 符号来查找属性。呵呵。
【解决方案2】:

多亏了 Thomas Jung,我才能够弄清楚这一点。如果我使用:

//*[contains(./@id, 'f41_txt')]/@id

这将只返回我正在寻找的 ID。

【讨论】:

  • 请注意,这可能会失败。您可能想改用//*[starts-with(@id, 'f41_txt')]/@id
【解决方案3】:

当您使用部分 id 编写 xpath 时,我建议不要使用 Id 中的数字。这些数字代表 DINAMIC 元素。并且动态元素在被测系统中的下一次部署/发布中发生变化。目的是唯一标识元素。 使用这可能是一个更好的选择或类似的东西,你明白了: //输入[包含(@id, '_txtResponse')]/@id

【讨论】:

    【解决方案4】:

    它对我有用,如下所示

    //*[contains(./@id, 'f41_txt')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      相关资源
      最近更新 更多