我找不到答案,我想了解我們為什么這樣做,所以:為什么在創建自定義 ExpectedConditions 時,我們必須覆寫apply方法?這很可能是一些簡單而基本的東西,但我就是無法理解。
這是我在網上找到的一個例子:
public boolean customExpectedConditions() {
WebDriverWait wait = new WebDriverWait(driver, 60);
ExpectedCondition<Boolean> jqLoaded = new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) { // why this part?
try {
return ((Long)((JavascriptExecutor)getDriver()).executeScript("return jQuery.active") == 0);
}
catch (Exception e) {
// no jQuery present
return true;
}
}
};
return wait.until(jqLoaded);
}
uj5u.com熱心網友回復:
您需要覆寫它,因為WaitSelenium 中的實作(如FluentWait)需要Function介面的實作來測驗條件。
ExpectedCondition<Boolean>只是擴展該介面以限制作為引數進入“函式”的內容。它將它限制為WebDriver物件。
因此,當您準備自己的條件時,您需要實作告訴 Selenium 條件是否滿足的邏輯。你通過覆寫apply方法來做到這一點。
你可以找到如何服務員中的硒作業的更多細節與條件的情況下FluentWait(其他服務員在完全相同的方式作業)。
您還可以檢查它以在 Selenium 中找到更多自定義條件的示例,并查看它們是否足夠靈活,可以處理您可以使用 Java 檢測到的任何型別的事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397008.html
上一篇:我想廢棄一個網站并在selenium中獲取所有帶有標題的鏈接,但是一旦我從主頁導航并回傳,我就會遇到陳舊的元素問題
