1

我正在尝试编写一个非常简单的 WebdriverIO 脚本,该脚本将访问一个 URL,等待 JS 中的某些条件为真(例如,设置了一个全局变量)并在它为真时截取屏幕截图。但是waitUntil抛出一个错误,说“CommandError:承诺永远不会以真实的价值解决”。以下是我的脚本的简化版本:

"use strict";

var webdriverio = require('webdriverio');

var client = webdriverio.remote({
    desiredCapabilities: {
        browserName: 'chrome',
    },
})
.init()
.url("https://google.com")
.waitUntil(
    function() {
        return client.execute(
            function() {
                return true;
            }
        );
    }
)
.screenshot();

我的实际情况当然不仅仅是“ return true;”,但这表明执行显然会返回一个真实的值。

如果我删除对 的调用screenshot(),则不会出现错误。

我尝试为 设置一个高超时值waitUntil(),并尝试从调用中返回实际的 result.value .execute()——两者都没有帮助。

4

1 回答 1

0

好吧,凭直觉我尝试了一些东西。我没有打电话client.execute(),而是打电话this.execute()。出于某种原因,这行得通。我对原因的唯一猜测是 waitUntil 在与 分开的特殊上下文中执行自身client,并且该上下文是它期望以某种方式得到承诺的内容。

于 2015-08-24T00:53:53.020 回答