Java 在表格中搜索特定文本,然后单击selenium中同一行的第二个单元格
大家好, 因此,基本上我需要搜索正在进行的应用程序并单击应用程序id。下面是HTMLJava 在表格中搜索特定文本,然后单击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
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();