Как реализовать WAIT для загрузки элементов экрана в гибридном мобильном приложении ionic 2 с помощью транспортира

Как реализовать wait для загрузки элементов экрана в гибридном мобильном приложении ionic 2 с помощью транспортира.

Поскольку я тестирую мобильное приложение IONIC и не могу использовать wait без browser.sleep(), экземпляр браузера не работает в приложении.

Пожалуйста, помогите мне решить эту проблему.


person Sudhanshu Gupta    schedule 29.12.2017    source источник


Ответы (1)


Прошло некоторое время, но я успешно протестировал Ionic с Protractor со следующим вспомогательным методом:

waitForIonic: function () {
    //Register a promise with protractor, so the browser waits for it
    var deferred = protractor.promise.defer();

    let clickBlock = element(by.css('.click-block-active'));

    //if there's a click block, wait for it to be gone, otherwise just wait 1 sec
    if (clickBlock.isPresent()) {
        var untilClickBlockIsGone = ExpectedConditions.not(ExpectedConditions.visibilityOf(clickBlock));
        browser.wait(untilClickBlockIsGone, 20000).then(() => {
            browser.driver.sleep(1000);
            //We've fulfilled the promise, so 
            deferred.fulfill();
        });
    }
    else {
        browser.driver.sleep(1000);
        //We've fulfilled the promise, so 
        deferred.fulfill();
    }

    //Return the promise (which hasn't been fulfilled yet)
    return deferred.promise;
}

Затем используйте его так:

//Wait for ionic animiations, Click logout
module.exports.waitForIonic().then(() => {
    logoutButton.click();
});
person BRass    schedule 29.12.2017
comment
Это мобильное приложение для Android, разработанное в ionic 2, и оно не работает с браузерами. Потому что браузер не работает. - person Sudhanshu Gupta; 29.12.2017
comment
браузер.драйвер.спать(1000); умеет ждать поток. Спасибо за вашу помощь. С Новым 2018 годом - person Sudhanshu Gupta; 29.12.2017