循环遍历行并单击

时间:2015-10-26 14:09:19

标签: java selenium xpath

我在下面的HTML表格中。

 <table>
        <tr>
            <td>Link 1</td>
            <td>Archieved</td>
        </tr>
        <tr>
            <td>Link 2</td>
            <td>Terminated</td>
        </tr>
        <tr>
            <td>Link 3</td>
            <td>Active</td>
        </tr>
        <tr>
            <td>Link 4</td>
            <td>Archieved</td>
        </tr>
    </table>

这里基本上我想循环遍历所有行,并且仅当第二行中的内容不包含Terminated时才点击。

在XSLT中,我使用xsl:for-each select,但在Selenium中,我无法理解如何执行此操作。请告诉我如何点击不包含Terminated的行。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用单个XPath表达式过滤掉不包含“已终止”的行:

//tr[td[2] != 'Terminated']

以下是循环匹配选择器的元素的方法:

for(WebElement row: driver.findElements(By.xpath("//tr[td[2] != 'Terminated']"))) {
    // do smth with a row
}

答案 1 :(得分:2)

以下是循环所有行的方法,单击那些不匹配的行&#34; Terminated&#34;作为文本,用其他行做任何你喜欢的事情:

List<WebElement> allRows = driver.findElements(By.xpath("//table/tr"))

for (WebElement row : allRows) {
    if (!row.findElement(By.xpath("./td[2]")).getText().contains("Terminated")) {
        row.click();
    }
    // get whatever you need from the rows here
}