在没有明确等待时间的情况下检查要点击的元素

时间:2015-04-30 08:39:57

标签: java user-interface selenium gui-testing gui-test-framework

正如Selenium Documentation所述,我们永远不应该混淆 显式 隐式 等待时间:

  

警告:不要混合隐式和显式等待。这样做会导致不可预测的等待时间。例如,设置10秒的隐式等待和15秒的显式等待可能会导致20秒后发生超时。

我设置了5000毫秒的隐含等待时间。在某些浏览器交互结束时,我只想验证所需链接是否可点击。

我知道这可以通过使用ExpectedConditions来完成,但这意味着明确的等待时间,如下例所示。

protected PageNewDocument isElementClickable(WebElement element)
{
    (new WebDriverWait(driver, 1)).until(ExpectedConditions.elementToBeClickable(element));
    return this;
}

如何在没有明确等待时间的情况下检查可点击的元素?

1 个答案:

答案 0 :(得分:0)

前几天回答了类似的问题here。此方法在返回true之前等待页面加载。因此,您的元素应该可以点击。

private static WebDriverWait wait = new WebDriverWait(driver, 60);
private static JavascriptExecutor js  = (JavascriptExecutor) driver;

public static void waitForPageLoaded() {
            wait.until(new ExpectedCondition<Boolean>() {
                public Boolean apply(WebDriver driver) {
                    Boolean res = (js.executeScript("return document.readyState").equals("complete"));
                    System.out.println("[DEBUG] waitForPageLoaded: " + res);
                    return res;
            }
    });
}