while循环的错误处理

时间:2016-10-25 18:37:57

标签: java

我需要这个场景的帮助,我需要从分页表中找到一个字符串,其中每个页面包含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;
      }
     }
    }
   }
  }

1 个答案:

答案 0 :(得分:1)

for之外初始化romElem,然后用它来切换你的旗帜。如果你达到了你的max rowElemen并且你没找到你想要的东西,那么可以认为这个值是假的。

另外,一会儿的目的是什么?你可以完全删除它,混合一段时间和一段时间通常是一个坏主意。在这种情况下,我没有看到这样做的重点。