我需要这个场景的帮助,我需要从分页表中找到一个字符串,其中每个页面包含50个项目。我的下面的代码工作正常,唯一的问题是,当它无法找到数据时,我的while循环有时会无限期地保持运行并且不会失败,但有时会这样做!我能做什么才能在到达多个循环后总是返回错误?
public int inboxLocateLoan(String expName, String name) throws Throwable {
//Locate Loan element in SharePoint table
report.setFailedResult("Loan element is not found");
int loanRow;
try {
boolean loansearch = true;
while (loansearch) {
List < WebElement > rowElem = getWebElements(getAEDriver(), "xpath", sRow);
for (int i = 1; i <= rowElem.size(); i++) {
String actualLoanName = driver.findElement(By.xpath("//*[@id='onetidDoclibViewTbl0']/tbody[2]/tr[" + i + "]/td[3]")).getText();
// String actualLoanNumber = driver.findElement(By.xpath("//*[@id='onetidDoclibViewTbl0']/tbody[2]/tr["+i+"]/td[5]")).getText();
loanRow = i;
if (actualLoanName.equals(expName)) {
loansearch = false;
return loanRow;
}
if (actualLoanName.equals(name)) {
click(getAEDriver(), "xpath", "//*[@class='ms-pivotControl-surfacedOpt-selected']", "Refresh");
loansearch = true;
} else {
if (i == 50) {
click(getAEDriver(), "xpath", "//*[@id='pagingWPQ2next']/a", "Next Page");
} else {
loansearch = true;
}
}
}
}
}
答案 0 :(得分:1)
在for
之外初始化romElem,然后用它来切换你的旗帜。如果你达到了你的max rowElemen并且你没找到你想要的东西,那么可以认为这个值是假的。
另外,一会儿的目的是什么?你可以完全删除它,混合一段时间和一段时间通常是一个坏主意。在这种情况下,我没有看到这样做的重点。