WebdriverIO 屏幕截图在等待执行条件后失败

WebdriverIO screenshot fails after waiting for execute condition

我正在尝试编写一个非常简单的 WebdriverIO 脚本,它将命中 URL,等待 JS 中的某些条件为真(例如,正在设置一个全局变量)并在它为真时截取屏幕截图真的。但是 waitUntil 正在抛出一个错误 "CommandError: Promise never resolved with an truthy value"。下面是我的脚本的简化版本:

"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;”,但这表明执行显然会 return 一个真实值。

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

我已经尝试为 waitUntil() 设置一个高超时值,并且我已经尝试 return 从 .execute() 调用中获取实际的 result.value -- 都没有有帮助。

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