我有一些使用 Awaitility 库(https://mvnrepository.com/artifact/org.awaitility/awaitility/4.0.2)的功能测试,我需要的是用它运行一些代码,并在以下情况下执行一些操作条件失败,直到成功,或者时间超过 Awaitility 条件的限制。
到目前为止我有这个:
Awaitility.await().atMost(10, SECONDS).until(() -> {
try {
some code...
some assertions...
return true;
} catch (Throwable throwable) {
throwable.printStackTrace();
some more code...
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
如果超过 10 秒限制,此条件失败,我得到的结果是:
org.awaitility.core.ConditionTimeoutException: Condition with lambda expression in myproject.class was not fulfilled within 10 seconds.
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能显示导致 Awaitility 条件未成功的真实代码异常,同时还具有在代码失败时运行某些代码的功能呢?
先感谢您。
我需要等待 javascript 的结果与字符串或布尔值匹配。
使用这个 JavaScript:
document.getElementById('video_html5').seeking;
Run Code Online (Sandbox Code Playgroud)
我得到一个“假”/“真”值,我需要等到该值是“假”,所以我确定视频不是在寻找,但我只找到了等待javascript命令值的方法而不是检查该值是否与某些文本匹配的方法。
new WebDriverWait(driver, 30)
.until(ExpectedConditions.jsReturnsValue("return document.getElementById('video_html5').seeking;"));
Run Code Online (Sandbox Code Playgroud)
因为在某些情况下我会得到一个布尔值以外的字符串,并且需要比较这些字符串。
我已经找到了如何在 Ruby 中执行此操作,但在 Java 中却没有:
wait_element = @wait.until { @driver.execute_script("return document.getElementById('vid1_html5_api_Shaka_api').seeking;").eql? false }
Run Code Online (Sandbox Code Playgroud) 我遇到了 mvn 命令的问题,我正在将其构建为变量值,然后执行。
如果我直接执行命令,作为变量值的回显,它可以完美运行。但是如果我执行变量值,它会给我一个错误,就像参数之一不在双引号内一样。
我需要构建命令,因为参数取决于来自其他脚本而不是运行这些脚本的某些变量名称。
这些是命令:
有了这个,如果 $CLOUD 值为 true,我将 Maven 命令存储在带有一些额外参数的变量中:
$ export CLOUD=true && export mvn_cmd="mvn clean test --batch-mode $(if [[ "$CLOUD" == "true" ]]; then echo -Ddevice=\"Samsung Galaxy J7 Prime\" -DnetworkLog=true; fi) -Dcucumber.filter.tags=\"@tmsLink=ID-16848\""
Run Code Online (Sandbox Code Playgroud)
如果我回显该命令就完全没问题:
$ echo $mvn_cmd
mvn clean test --batch-mode -Ddevice="Samsung Galaxy J7 Prime" -DnetworkLog=true -Dcucumber.filter.tags="@tmsLink=ID-16848"
Run Code Online (Sandbox Code Playgroud)
如果我运行这个:
$ $mvn_cmd
...
[ERROR] Unknown lifecycle phase "Galaxy". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, …Run Code Online (Sandbox Code Playgroud)