如何将方法 return 类型设为 Callable<Boolean>
How to make a method return type as Callable<Boolean>
我的方法之一:
public void pageIsReady()
实现是
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(isPageLoaded());
这里,isPageLoaded()
方法是returns的布尔值,但是我希望它是return一个Callable
的布尔值,因为until()
方法中Awaitility
期望 Callable<Boolean>
.
请帮我制作方法isPageLoaded()
return Callable<Boolean>
下面是isPageLoaded()
方法的实现:
protected Boolean isPageLoaded() {
String jsQuery = "function pageLoaded() "
+ "{var loadingStatus=(document.readyState=='complete');"
+ "return loadingStatus;};"
+ "return pageLoaded()";
boolean isSuccess = false;
try {
isSuccess = (Boolean) evaluateJavascript(jsQuery);
} catch (Exception exp) {
exp.printStackTrace();
}
return isSuccess;
}
只需按如下方式定义您的 isPageLoaded()
方法:
protected Callable<Boolean> isPageLoaded() {
//code..
}
最简单的方法是使用方法引用 Callable<Boolean> isPageLoaded = this::isPageLoaded
,或将其显式用作 lambda Callable<Boolean> isPageLoaded = () -> isPageLoaded();
这看起来像
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(this::isPageLoaded);
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> isPageLoaded());
另一种方法是将您的方法定义为返回 Callable<Boolean>
,然后使用 lambda 语法 () -> {}
编写可调用对象。
protected Callable<Boolean> isPageLoaded() {
return () -> {
String jsQuery = "function pageLoaded() "
+ "{var loadingStatus=(document.readyState=='complete');"
+ "return loadingStatus;};"
+ "return pageLoaded()";
boolean isSuccess = false;
try {
isSuccess = (Boolean) evaluateJavascript(jsQuery);
} catch (Exception exp) {
exp.printStackTrace();
}
return isSuccess;
};
}
Lambda 表达式和方法引用可以成为非常强大的工具。
我的方法之一:
public void pageIsReady()
实现是
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(isPageLoaded());
这里,isPageLoaded()
方法是returns的布尔值,但是我希望它是return一个Callable
的布尔值,因为until()
方法中Awaitility
期望 Callable<Boolean>
.
请帮我制作方法isPageLoaded()
return Callable<Boolean>
下面是isPageLoaded()
方法的实现:
protected Boolean isPageLoaded() {
String jsQuery = "function pageLoaded() "
+ "{var loadingStatus=(document.readyState=='complete');"
+ "return loadingStatus;};"
+ "return pageLoaded()";
boolean isSuccess = false;
try {
isSuccess = (Boolean) evaluateJavascript(jsQuery);
} catch (Exception exp) {
exp.printStackTrace();
}
return isSuccess;
}
只需按如下方式定义您的 isPageLoaded()
方法:
protected Callable<Boolean> isPageLoaded() {
//code..
}
最简单的方法是使用方法引用 Callable<Boolean> isPageLoaded = this::isPageLoaded
,或将其显式用作 lambda Callable<Boolean> isPageLoaded = () -> isPageLoaded();
这看起来像
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(this::isPageLoaded);
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> isPageLoaded());
另一种方法是将您的方法定义为返回 Callable<Boolean>
,然后使用 lambda 语法 () -> {}
编写可调用对象。
protected Callable<Boolean> isPageLoaded() {
return () -> {
String jsQuery = "function pageLoaded() "
+ "{var loadingStatus=(document.readyState=='complete');"
+ "return loadingStatus;};"
+ "return pageLoaded()";
boolean isSuccess = false;
try {
isSuccess = (Boolean) evaluateJavascript(jsQuery);
} catch (Exception exp) {
exp.printStackTrace();
}
return isSuccess;
};
}
Lambda 表达式和方法引用可以成为非常强大的工具。