2

我正在使用 Selenium WebDriver 和 Java 编写自动化测试,这些测试需要在其中进行大量等待,以确保在采取下一个操作之前已经加载了适当的元素。

我试过这个:

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

它将等待指定的时间间隔,然后如果找不到元素则失败,

和这个:

WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(new ExpectedCondition<Boolean>() {
  public Boolean apply(WebDriver webDriver) {
    System.out.println("Searching for the Companies dropdown");
    return webDriver.findElement(By.id("ctl00_PageContent_vpccompanies_Input")) != null;
  }
});

如果找不到元素,它将无限期挂起,

我想要的是可以搜索该元素几次尝试然后失败并显示错误消息的东西。

4

2 回答 2

1

将您的代码包装到一个循环中并循环,直到找到条件匹配或退出循环的额外条件。用于isElementPresent(element)检查查找条件。

于 2012-10-17T17:48:19.107 回答
0

我会说,放入your element access code 一个 while 循环,它会在success或上中断number of attempts

例如(伪代码)

    int numAttemps = 0;
    int specifiedAttempts = 5;
    boolean success = false;
    do{
       numAttemps++;
       try{
         //access the element
          WebElement element = driver.findElement(By.id(..));
          success  = true; //<--If it reaches here means success
       }catch(NoSuchElementException nse)
           //one attempt failed
       }
     }while(!success || numAttemps <specifiedAttempts);

     if(!success){
        System.out.println("Couldn't load after " +specifiedAttempts+ " attempts");
     }
于 2012-10-17T17:47:52.570 回答