我正在查看的表的示例结构如下:
<tbody>
<tr class="OddRow">
<td class="TimeField">
7:20 AM
</td>
<td class="TextField"></td>
<td id="Price_2_1" class="MoneyField"></td>
<td class="LinkField">
<a id="basketControl_2_1" class="sr_AddToBasket">
Add to Basket
</a>
</td>
</tr>
<tr class="EvenRow">
<td class="TimeField"></td>
<td class="TextField"></td>
<td id="Price_2_2" class="MoneyField"></td>
<td class="LinkField"></td>
</tr>
...OddRow
...EvenRow
</tbody>
当类“TimeField”中的值是我指定的值时,我希望能够做的是单击(使用 Selenium )类“sr_AddToBasket”的元素。在特定实例中,表中只有一行可以具有指定时间。
我真的不知道如何解决这个问题,所以任何帮助将不胜感激!如果它有帮助的话,我目前正在 python 中尝试这个,但有一些 java 知识。
最佳答案
假设您添加两行后的结构如下所示:
<table>
<tbody>
<tr class="OddRow">
<td class="TimeField">
7:20 AM
</td>
<td class="TextField"></td>
<td id="Price_2_1" class="MoneyField"></td>
<td class="LinkField">
<a id="basketControl_2_1" class="sr_AddToBasket">
Add to Basket
</a>
</td>
</tr>
<tr class="EvenRow">
<td class="TimeField"></td>
<td class="TextField"></td>
<td id="Price_2_2" class="MoneyField"></td>
<td class="LinkField"></td>
</tr>
<tr class="OddRow">
<td class="TimeField"></td>
<td class="TextField"></td>
<td id="Price_2_1" class="MoneyField"></td>
<td class="LinkField"></td>
</tr>
<tr class="EvenRow">
<td class="TimeField">
9:00 PM
</td>
<td class="TextField"></td>
<td id="Price_2_2" class="MoneyField"></td>
<td class="LinkField">
<a id="basketControl_2_1" class="sr_AddToBasket">
Add to Basket
</a>
</td>
</tr>
</tbody>
</table>
所以,现在说您想点击第二个链接,然后请使用下面的Java代码:
driver.findElement(By.xpath("//td[@class='TimeField' and contains(text(),'9:00 PM')]/following-sibling::td/a[@class='sr_AddToBasket']")).click();
您可以将上面的“9:00 PM”替换为您的值。
关于java - 根据同一行中另一个元素的条件单击表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27932473/