Selenium WebdriverWait Lambda表达式
有人能解释清楚ExpectedCondition的布尔泛型类型是什么吗Selenium WebdriverWait Lambda表达式,selenium,selenium-webdriver,Selenium,Selenium Webdriver,有人能解释清楚ExpectedCondition的布尔泛型类型是什么吗 new WebDriverWait(driver, 60).until((ExpectedCondition<Boolean>) wd->((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")); newwebdriverwait(driver,60).until((ExpectedC
new WebDriverWait(driver, 60).until((ExpectedCondition<Boolean>) wd->((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete"));
newwebdriverwait(driver,60).until((ExpectedCondition)wd->((JavascriptExecutor)wd).executeScript(“returndocument.readyState”).equals(“complete”);
布尔是lamda表达式的返回类型。
在您的示例中,javascript执行器中javascript.equals(“complete”)
的最后一行返回布尔值
例如,以下示例返回WebElement
new WebDriverWait(driver, 60).until((ExpectedCondition<WebElement>) wd->((JavascriptExecutor) wd).executeScript("return document.getElementById(someid)"));
new WebDriverWait(driver, 60).until((ExpectedCondition<WebElement>) wd-> wd.findElement(By.id("someid")););
newwebdriverwait(driver,60).until((ExpectedCondition)wd->((JavascriptExecutor)wd).executeScript(“returndocument.getElementById(someid)”);
新的WebDriverWait(driver,60).until((ExpectedCondition)wd->wd.findElement(By.id(“someid”););
在ExpectedCondition
的代码中,我们可以看到:
public interface ExpectedCondition<T> extends Function<WebDriver, T>
您的函数比较两个对象:
1) 对象
由executeScript(“return document.readyState”)返回
。实际上,jsdocument.readyState
返回一个String
值加载/交互/完成
2) 字符串
“完成”
使用返回布尔值的.equals()
方法:
((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")
因此,函数的返回值是一个布尔值
,应该作为返回值类型传递,但java中的泛型不允许使用原语,因此必须使用布尔值
Java中的泛型是编译时构造——编译器将所有泛型使用转换为正确类型的类型转换。任何用作泛型的东西都必须转换为对象
,而基元类型则不能
((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")