【问题标题】:xpath to select tr that has several specific values in the columnsxpath 来选择在列中有几个特定值的 tr
【发布时间】:2012-05-23 19:44:09
【问题描述】:

我有一个包含多行的表,我正在尝试使用 xpath 来查找每一列中包含特定值的行。例如,我希望“foo”在第 1 列,“bar”在第 2 列,“baz”在第 3 列。

我可以使用什么 xpath 来获取在这些特定列中包含这三个特定值的行?

例如,给定下表,我希望能够只取回在其预期列中具有三个预期值的一行

<table>
  <tr><td>foo</td><td>bar</td><td>xxx</td></tr>
  <tr><td>xxx</td><td>bar</td><td>baz</td></tr>
  <tr><td>foo</td><td>bar</td><td>baz</td></tr>
  <tr><td>bar</td><td>baz</td><td>foo</td></tr>
  <tr><td>foo</td><td>xxx</td><td>baz</td></tr>
</table>

【问题讨论】:

    标签: xpath


    【解决方案1】:

    这可以解决问题(假设table 元素是当前上下文节点):

        tr[(td[1] = 'foo') and (td[2] = 'bar') and (td[3] = 'baz')]
    

    td[1] 选择第一个 td 孩子,td[2] 第二个等等。然后将条件与and 结合起来。

    【讨论】:

      【解决方案2】:

      这也可以解决问题...我相信有更快的方法来获得您想要的东西,而不是使用 xpath..

      //tr[td[1][text()='foo'] and td[2][text()='bar'] and td[3][text()='baz']]

      【讨论】:

      • 可能有更快的方法,但是 a) 我被限制在 IE 上使用 selenium,并且 b) 我的元素都没有区分 id、name 或 class 属性。这是一个挑战:-\
      【解决方案3】:

      搜索时可以使用directorypath\[name="value"]\...

      【讨论】:

      • 我知道,但是如何组合多个条件?我需要“tr,第一列的文本为'foo',第二列的文本为'bar'......”
      • 那么你能在 tr 中搜索“foo bar baz”吗?
      • 我想找到任何在第 1 列中有“foo”、第 2 列中有“bar”和第 3 列中有“baz”的 。
      • 哦,我知道你可以使用 tr[(td[1] ="name")]
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签