Java 在表格中搜索特定文本,然后单击selenium中同一行的第二个单元格

Java 在表格中搜索特定文本,然后单击selenium中同一行的第二个单元格,java,selenium,Java,Selenium,大家好, 因此,基本上我需要搜索正在进行的应用程序并单击应用程序id。下面是HTML Html:强调文本 行动 应用程序ID 应用状况 共同申请人 创建日期 创建人 上次修改日期 最后修改人 | 进行中 17/04/2017 2017年4月17日上午5:54 17/04/2017 ,2017年4月17日上午6:17 List elements=driver.findElements(By.cssSelector(“表中所有元素的css选择器”); for(WebElement e:eleme

大家好, 因此,基本上我需要搜索正在进行的应用程序并单击应用程序id。下面是HTML

Html:强调文本
行动
应用程序ID
应用状况
共同申请人
创建日期
创建人
上次修改日期
最后修改人
| 
进行中
17/04/2017
2017年4月17日上午5:54
17/04/2017
,2017年4月17日上午6:17
List elements=driver.findElements(By.cssSelector(“表中所有元素的css选择器”);
for(WebElement e:elements){
如果(e.getText().contains(“In progress”){
WebElement elmt=e.findelelement(By.cssSelector(“id的css选择器”);
elmt.click();
}
}

您可以使用cssSelector或其他选择器(id/xpath..)

您可以使用以下xpath:

//th[text()='In Progress']/前面的同级::th[1]

//首先获取表头
    // Get table headers first
    List<WebElement> tblHeaders = driver.findElements(By.xpath(".//table/tbody/tr[@class='headerRow']/th"));
    int applicationId = 0;
    int applicaitonStatus = 0;
    // Get column numbers for Application Id, Application Status columns
    for (int colCount = 0; colCount < tblHeaders.size(); colCount++) {
        if ("Application Status".equals(tblHeaders.get(colCount).getText())) {
            applicaitonStatus = colCount;
        } else if ("Application Id".equals(tblHeaders.get(colCount)
                .getText())) {
            applicationId = colCount;
        }
    }

    // Get table rows
    List<WebElement> tblRows = driver.findElements(By
            .xpath(".//table/tbody/tr[contains(@class,'dataRow')]"));

    for (WebElement webElement : tblRows) {
        List<WebElement> tblCells = webElement.findElements(By
                .tagName("td"));
        // If Application status is In Progress
        if ("In Progress".equals(tblCells.get(applicaitonStatus).getText())) {
            //Click respective Application Id
            tblCells.get(applicationId).click();
            break;
        }

    }
List tblHeaders=driver.findElements(By.xpath(“.//table/tbody/tr[@class='headerRow']/th”); int applicationId=0; int applicationstatus=0; //获取应用程序Id、应用程序状态列的列号 for(int colCount=0;colCount
根据您的状态“正在进行”,使用以下xpath单击id

driver.findElement(By.xpath(".//table[@class='list']//td[normalize-space()='In Progress']/preceding-sibling::th/a")).click();

注意:如果您有多个相同的元素,请使用
列表
获取并迭代所有这些元素

感谢您抽出时间回答我的问题。但是我得到以下错误java.lang.IndexOutOfBoundsException:索引:20,大小:6,在下面的行中:if(“In Progress”.equals(tblCells.get(applicationStatus).getText()){SO上不允许使用仅代码的答案。请花一分钟时间总结您的代码的作用以及它如何回答问题。Mehek,唯一地标识该表。可能是该页面有多个表,并且tblHeaders列表正在捕获所有标题。tblHeaders的大小应仅为6。感谢您的回答。它不起作用。它表示无法查找元素的步骤标签是否随附在td中?如果是,请将其更改为OrdinglyWelcome,Mehek。请阅读上的帮助,特别是显示您已经尝试过的内容,并告诉我们出现了什么问题。
driver.findElement(By.xpath(".//table[@class='list']//td[normalize-space()='In Progress']/preceding-sibling::th/a")).click();