java - 根据同一行中另一个元素的条件单击表中的元素

标签 java python selenium

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

<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/

相关文章:

java - 如何使用反射解析泛型返回类型的实际类型?

java - 我们需要在更改属性文件后部署 war 吗

python - 如何访问所有父类的属性?

Python xlrd 模块

python - 为什么 time.clock 给出的耗时比 time.time 长?

java - Selenium 网络驱动程序 : Need solution for a very specific issue pertaining to @BeforeTest (TestNG)

java - 为什么我的 ListView 在 TableRow 中包含 RatingBar 时不可点击?

java - 如何使用 Netbeans 将 jpanel 置于 jpanel 的中心?

java - 如何在 Eclipse 中获取 INPUT 字段数据?

linux - 如何将 headless (headless)窗口浏览器从远程服务器传输到我的本地计算机?