根据同一行中另一个元素的条件单击 table 中的元素
Clicking element in table based on condition on another element in the same row
我正在查看 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>
...OddRow
...EvenRow
</tbody>
当 class "TimeField" 中的值是某个值时,我希望能够做的是单击(使用硒)带有 class "sr_AddToBasket" 的元素我指定。在特定实例中,只有 table 的一行可以有指定的时间。
我真的不知道该怎么做,所以非常感谢您的帮助!如果有帮助,我目前正在 python 尝试此操作,但对 java.
有一些了解
if driver.find_elements_by_css_xpath("//tr[@class='EvenRow']/td[@class='TimeField']").get_attribute("value")=="your value":
driver.find_element_by_xpath("//a[@class='sr_AddToBasket']").click()
这个 get_attribute
应该 return 您设置的值和简单的 if
条件符合执行条件。然后接下来你找到你想要的 link 并点击。我使用 xpath
因为它可以帮助我们轻松识别 table 中的元素。
假设您添加两行后的结构如下所示:
<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>
所以,现在说你想点击第二个link,那么请使用下面的Java代码:
driver.findElement(By.xpath("//td[@class='TimeField' and contains(text(),'9:00 PM')]/following-sibling::td/a[@class='sr_AddToBasket']")).click();
您可以用您的值替换上面的“晚上 9:00”。
您可以使用以下内容:
这个问题在这里得到了回答 http://patch-recepteur.blogspot.com/2017/04/forum-clicking-element-in-table-based.html
<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>
我正在查看 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>
...OddRow
...EvenRow
</tbody>
当 class "TimeField" 中的值是某个值时,我希望能够做的是单击(使用硒)带有 class "sr_AddToBasket" 的元素我指定。在特定实例中,只有 table 的一行可以有指定的时间。
我真的不知道该怎么做,所以非常感谢您的帮助!如果有帮助,我目前正在 python 尝试此操作,但对 java.
有一些了解if driver.find_elements_by_css_xpath("//tr[@class='EvenRow']/td[@class='TimeField']").get_attribute("value")=="your value":
driver.find_element_by_xpath("//a[@class='sr_AddToBasket']").click()
这个 get_attribute
应该 return 您设置的值和简单的 if
条件符合执行条件。然后接下来你找到你想要的 link 并点击。我使用 xpath
因为它可以帮助我们轻松识别 table 中的元素。
假设您添加两行后的结构如下所示:
<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>
所以,现在说你想点击第二个link,那么请使用下面的Java代码:
driver.findElement(By.xpath("//td[@class='TimeField' and contains(text(),'9:00 PM')]/following-sibling::td/a[@class='sr_AddToBasket']")).click();
您可以用您的值替换上面的“晚上 9:00”。
您可以使用以下内容: 这个问题在这里得到了回答 http://patch-recepteur.blogspot.com/2017/04/forum-clicking-element-in-table-based.html
<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>