根据sam中另一个元素的条件单击表中的元素

2024-04-26 13:27:01 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我正在查看的表的结构示例:

<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有一些了解。在


Tags: id结构pricetrclasstdtextfieldsr
3条回答

您可以使用以下方法: 这个问题在这里得到了回答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>
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应该返回您设置的值,并且简单的if条件与执行条件匹配。然后你找到你想要的链接并点击。我使用xpath,因为它有助于我们轻松地识别表中的元素。在

下面再加两行结构:

<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代码:

^{pr2}$

您可以将上面的“9:00 PM”替换为您的值。

相关问题 更多 >