[英]How to make a method return type as Callable<Boolean>
在我的一種方法中:
public void pageIsReady()
實施是
Awaitility.await().atMost(5, TimeUnit.SECONDS).until(isPageLoaded());
在這里, isPageLoaded()
方法返回 boolean 值,但我希望它返回 Boolean 的Callable
,因為Awaitility
中的until()
方法需要Callable<Boolean>
。
請幫助我使方法isPageLoaded()
返回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 表達式和方法引用是非常強大的工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.