匹配表中的文本,然后使用selenium webdriver单击它

时间:2016-04-04 09:42:04

标签: xpath selenium-webdriver

我有一个表,其中有一列称为“状态”。我必须找到并点击与该列中的“已关闭成功”文本匹配的链接。该列中每个单元格的xpath为

 "//*[@id='TicketID_xxxxxx']/td[7]/div

其中xxxxxx是门票数量。那么如何找到具有不同xpath值的匹配文本并使用selenium webdriver单击它。请帮忙。

(可选 - 我必须单击该元素,单击后面并查找具有相同匹配文本的下一个元素)

3 个答案:

答案 0 :(得分:3)

嗨Sanket Patel请按照下面的说法进行操作

driver.get(yourWebPageLInk); // link to your web-table web page

    // take all of the element under Column "State" inside list

    List<WebElement> columVal =  driver.findElements(By.xpath("//*[starts-with(@id,'TicketID_')]/td[7]/div"));
    // count the size of the list to match with the size of the column state
    System.out.println("Size of the contents in the column state is : " +columVal.size());

    // now for matching one of the content and then performing some action please
    // start a for loop

    String oneVal = "closed successful";
    for(int i=0;i<columVal.size();i++){
        System.out.println("Content text is : " + columVal.get(i).getText());
        // match the content here in the if loop
        if(columVal.get(i).getText().equals(oneVal)){
            // perform action
            columVal.get(i).click();
        }
    }

答案 1 :(得分:0)

您可以使用text()方法

String text = "someText";
driver.findElement(By.xpath("//div[contains(text(), '" + text + "')]")).click();

cssSelector

String text = "someText";
driver.findElement(By.cssSelector("div:contains('" + text + "')")).click();

答案 2 :(得分:0)

对于这种情况,您可以使用 Selenium WebDriver 的 TableDriver 扩展。 (https://github.com/jkindwall/TableDriver.Java)。如果有关于相关表格的更多详细信息,这将很有帮助,但是,如果我们假设该表格有一列“链接”包含您需要单击的链接,并且我们假设主表格元素的 id 是“tabelId "你可以这样做:

dask.config.config