使用Xpath轴在动态表中标识Xpath



此处的tableenter图像描述我想使用轴为表中的列值编写一个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>

您可以找到text='HDIL'的"table row",并从该行获取最后一个表单元格。例如:

//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();

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

因此,合适的xpath应该是://td[a[contains (text(), 'HDIL')]]/following-sibling::td[font[@class='green']]

请参阅此处的测试。

最新更新