Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium WebdriverWait Lambda表达式_Selenium_Selenium Webdriver - Fatal编程技术网

Selenium WebdriverWait Lambda表达式

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

有人能解释清楚ExpectedCondition的布尔泛型类型是什么吗

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”)返回
。实际上,js
document.readyState
返回一个
String
值加载/交互/完成

2)
字符串
“完成”

使用返回
布尔值的
.equals()
方法:

((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")
因此,函数的返回值是一个
布尔值
,应该作为返回值类型传递,但java中的泛型不允许使用原语,因此必须使用
布尔值

Java中的泛型是编译时构造——编译器将所有泛型使用转换为正确类型的类型转换。任何用作泛型的东西都必须转换为
对象
,而基元类型则不能

((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")