我有两种方法可以做同样的事情。不幸的是,选项二工作了一些时间(10次中有5次)...选项一很少工作(10次中有2次)...有没有更好的方法来编写这段代码......
一:
public static void clickOnLinkinWebTable(WebElement webTable, String lookUpValue) throws MyException {
for (WebElement row : webTable.findElements(By.xpath("tr"))) {
for (WebElement col : row.findElements(By.xpath("td")))
if (col.getText().equals(lookUpValue)) {
col.findElement(By.partialLinkText(lookUpValue)).click();
return;
}
}
}
二:
public static void clickOnLinkinWebTable(String tableXpathRow, String lookUpValue) throws MyException {
int row_cnt = driver.findElements(By.xpath(tableXpathRow)).size();
for (int row_num = 1; row_num <= row_cnt; row_num++) {
int col_cnt = driver.findElements(By.xpath(tableXpathRow+"["+row_num+"]"+"/td")).size();
for (int col_num = 1; col_num <= col_cnt; col_num++) {
String cellValue = driver.findElement(By.xpath(tableXpathRow+"["+row_num+"]/td["+col_num+"]")).getText();
if(lookUpValue.equalsIgnoreCase(cellValue)){
WebElement elementLink = driver.findElement(By.xpath(tableXpathRow+"["+row_num+"]/td["+col_num+ "]/a"));
elementLink.click();
return;
}
}
}
}
有时/很少工作:我在测试套件中运行测试。此方法在测试套件中至少调用15次(在同一页面中)。有时可以工作,但在调用此方法的某个时候不起作用。
答案 0 :(得分:2)
可以使用查找的xpath单击webtable链接。
driver.findElement(By.xpath(path)).click();
其中
path="//td[contains(text(),lookupvalue)]"
(这可以通过字符串连接完成,如下所示)
String s="//td[contains(text(), ";
String qt=")]";
String path=(s.concat(lookupvalue)).concat(qt);
希望这有帮助。