同じことを行う2つの方法があります。残念ながら、オプション 2 は数回 (10 回中 5 回) 機能します... オプション 1 はめったに機能しません (10 回中 2 回)... このコードを記述するためのより良い方法はありますか...
1:
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 回呼び出されます。このメソッドが呼び出されると、機能する場合もありますが、機能しない場合もあります。