1

私は非常に単純な WebdriverIO スクリプトを作成しようとしています。このスクリプトは URL にヒットし、JS で何らかの条件が true になるのを待ち (グローバル変数が設定されているなど)、true になったらスクリーンショットを撮ります。しかしwaitUntil、「CommandError: Promise は真の値で解決されませんでした」というエラーが表示されます。以下は、私のスクリプトの簡略版です。

"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 に答える