Selenium Webdriver/Java-等待功能和错误处理

问题描述 投票:0回答:2

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

我试过这个:

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;
  }
});

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

我想要的是能够搜索该元素几次尝试,然后失败并显示错误消息。

java selenium-webdriver automated-tests timeout wait
2个回答
1
投票

将代码包装到循环中并循环,直到查找条件匹配或退出循环的额外条件。 使用

isElementPresent(element)
检查查找条件。


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");
     }
© www.soinside.com 2019 - 2024. All rights reserved.