Selenium - 为什么要在自定义预期条件中覆盖"应用"?



我找不到答案,我想了解我们为什么这样做,那么:为什么在创建自定义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);
}

您需要重写它,因为Selenium中的Wait实现(如FluentWait(期望Function接口的实现来测试条件。

CCD_ 4只是扩展了该接口以限制进入您的";函数";作为参数。它将其限制为WebDriver对象。

因此,当您准备自己的条件时,您需要实现逻辑,告诉Selenium条件是否满足。您可以通过重写apply方法来实现这一点。

FluentWait的情况下,您可以找到Selenium中的服务员如何在条件下工作的更多细节(其他服务员的工作方式完全相同(。

您还可以检查它,以在Selenium中找到更多自定义条件的示例,并查看它们是否足够灵活,可以用于您可以用Java检测到的任何类型的事件。

最新更新