正确等待元素消失?

时间:2017-06-02 10:37:37

标签: java selenium selenium-webdriver webdriver

正确等待元素消失?

我有一个ajax加载器,例如点击一个按钮后加载,我的方法是否正确,等待一个特定的加载条,它取消了屏幕的全宽和高度?

    public void waitUntilAjaxLoaderDisapears() {
    // Wait up to 2minutes for the element to disappear
    WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60);
    ajaxWait.pollingEvery(100, TimeUnit.SECONDS);
    try {
        //tempWait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector(".modal-body")));
        ajaxWait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//*[contains(@class, 'ajax_loader')]")));
    } catch (UnhandledAlertException e) {
         Alert alert = driver.switchTo().alert();
         alert.accept();
    }catch (NoAlertPresentException e) {
        //
    }catch (StaleElementReferenceException e) {
        // do nothing
    } catch (NullPointerException e) {
        // do nothing
    } catch (Exception e) {
        // do nothing
    }
}

1 个答案:

答案 0 :(得分:1)

我想我遇到了这个问题。轮询时间应小于整个等待时间。所以可以,

 WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60);
 ajaxWait.pollingEvery(**5**, TimeUnit.SECONDS);

而不是

WebDriverWait ajaxWait = new WebDriverWait(this.driver, 60);
ajaxWait.pollingEvery(100, TimeUnit.SECONDS);

希望这会对你有所帮助。感谢。