簡體   English   中英

如何從 ExpectedCondition 對象返回 boolean 值

[英]How do I return boolean value from ExpectedCondition objects

我確實有一種方法可以等待 JavaScript 在瀏覽器中加載。 從 Selenium 3 (3.141.59),我轉移到 Selenium 4 (4.0.0-alpha-7)

此返回代碼/語句不適用於 Selenium 4

return wait.until(jQueryLoad) && wait.until(jsLoad);

什么是正確的返回聲明? 我嘗試了幾種選擇,但沒有任何效果。 請參閱下面的方法/功能的代碼結構。 您的想法、想法和答案將受到高度評價。

    public static boolean waitForJStoLoad() {
    WebDriverWait wait = new WebDriverWait(getDriver(), Duration.ofSeconds(30));
    // wait for jQuery to load
    ExpectedCondition<Boolean> jQueryLoad = new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(WebDriver arg0) {
            try {
                Long state = (Long) ((JavascriptExecutor) arg0).executeScript("return jQuery.active");
                return (state == 0);
            } catch (Exception e) {
                return true;
            }
        }
    };
    // wait for Javascript to load
    ExpectedCondition<Boolean> jsLoad = new ExpectedCondition<Boolean>() {
        @Override
        public Boolean apply(WebDriver arg0) {
            String state = (String) ((JavascriptExecutor) arg0).executeScript("return document.readyState;");
            return state.equalsIgnoreCase("complete");
        }
    };
    
    
    return wait.until(jQueryLoad) && wait.until(jsLoad);
    
}

好吧,我使用的是標准的 Selenium 3 並且不檢查 JavaScript,但我確實有幾種簡單的方法可以使用預期條件驗證某些條件並返回 Boolean。
像這樣的東西:

public boolean waitForElementToDisappear(By element){
    try {
        wait.until((ExpectedConditions.invisibilityOfElementLocated(element)));
        return true;
    }catch (Throwable t){
        return false;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM