【问题标题】:Identify Xpath in a dynamic table using xpath axes使用 xpath 轴识别动态表中的 Xpath
【发布时间】:2020-07-20 08:05:26
【问题描述】:

tableenter image description here我想为表中的a列值编写一个xpath,对应于同一行中的特定值。

例如我想打印 HDIL 的最后一列值。

我尝试过的Xpath:

//a[contains (text(), ‘HDIL’)]/following-sibling::td[@class=‘green’]

HTML

<tr>
                <td>
                    <a href="http://demo.guru99.com/">
                    HDIL                    </a>
                </td>
                    <td>A</td>
                    <td>564.6</td>
                    <td>68.8</td>
                <td><font class="green">+   6.1</font></td>
            </tr>

【问题讨论】:

  • 请提供表格的 sn-p 和您的代码
  • 不知何故无法附加。我需要 10 个声望来添加它。将在此处复制 HTML。

标签: selenium xpath


【解决方案1】:

您可能会找到带有 text = 'HDIL' 的“表格行”,并从该行获取最后一个表格单元格。例如。像这样:

//tr[td[contains(string(), 'HDIL')]]/td[last()]

//tr[td[contains(string(), 'HDIL')]]/td[font]

或者使用 webDriver,我会找到所需行的所有单元格并获取最后一个:

// C# code;
var lastCell = driver.FindElements(By.XPath("//tr[td[contains(string(), 'HDIL')]]/td")).Last();

【讨论】:

  • 没用,最后一列是第一列的兄弟,与其他子值不同。我添加了 HTML 请参考并提出解决方案。 TIA
  • 嘿,这确实有效。但是为什么当我使用 //a[contains(string(),'HDIL')]/td[font] 时它不起作用
  • 虽然如果我跳过 td[font] ,会找到 hdil 值
【解决方案2】:

您的 xpath 是以从 a 获取兄弟姐妹的方式编写的,但您应该获取包含 atd 的兄弟姐妹。您的 xpath 还暗示 class='green'td 的属性,但实际上(根据您的示例)它是 font 的属性,它是 td 的子属性。

所以正确的 xpath 应该是://td[a[contains (text(), 'HDIL')]]/following-sibling::td[font[@class='green']]

查看测试here

【讨论】:

  • 嘿,谢谢,但如果这不是最后一列呢?在那种情况下,我想使用路径轴。
  • 什么意思?我的示例中的输出应该是什么?
  • 我的意思是,如果它不是我要打印的最后一列怎么办。可能是 HDIL 的三分之一。那么我们将使用什么?
  • 我明白了.. 试试这个//td[a[contains (text(), ‘HDIL’)]]/following-sibling::td[@class=‘green’],您的查询不起作用,因为您查询了a 的兄弟姐妹,但您需要获取包含atd 的兄弟姐妹
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
相关资源
最近更新 更多