小编Lea*_*501的帖子

处理等待 lambda 失败条件下的内部异常

我有一些使用 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 条件未成功的真实代码异常,同时还具有在代码失败时运行某些代码的功能呢?

先感谢您。

java exception awaitility

5
推荐指数
0
解决办法
5940
查看次数

Selenium - 等待返回的 javascript 脚本值匹配值

我需要等待 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)

javascript java selenium-webdriver

0
推荐指数
1
解决办法
6362
查看次数

将变量值作为命令执行与直接在 shell 中执行的结果不同

我遇到了 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)

java bash junit maven

0
推荐指数
1
解决办法
56
查看次数