Скриншот WebdriverIO не работает после ожидания выполнения условия

Я пытаюсь написать очень простой скрипт WebdriverIO, который будет обращаться к URL-адресу, ждать, пока какое-то условие будет истинным в JS (например, установленная глобальная переменная), и делать снимок экрана, когда это верно. Но 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() - ни то, ни другое не помогло.


person Turner Hayes    schedule 22.08.2015    source источник


Ответы (1)


Ладно, по наитию я попробовал кое-что. Вместо того, чтобы звонить client.execute(), я позвонил this.execute(). Почему-то это сработало. Мое единственное предположение о причине заключается в том, что waitUntil выполняет себя в специальном контексте, который отделен от client, и в этом контексте он каким-то образом ожидает промис.

person Turner Hayes    schedule 24.08.2015