根据同一行中另一个元素的条件单击 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>