Почему я должен использовать browser.sleep во время написания тестов транспортира
Мой первый запуск на тестах E2E. Я пытаюсь переварить чьи-то еще тесты на транспортир.
Проблема: Есть много browser.driver.sleep
, и это кажется хрупким.
Цель: не использовать browser.driver.sleep
Вопрос: Что такое лучший подход к browser.driver.sleep
? Что-то менее хрупкое, как обещание или что-то, что я не знаю о LOL?
var config = require('../../protractor.conf.js').config;
describe('this Homepage Body Tests', function(){
browser.driver.get(config.homepageUrl);
it("should open find a clinic page", function(){
// page loads :: want to fix this random wait interval
browser.driver.sleep(2000);
browser.ignoreSynchronization = true;
var string = 'clinic';
var main = '.search-large-text';
var link = element(by.cssContainingText('.submenu li a', string));
link.click().then(function() {
// page reloads :: want to fix this random wait interval
browser.driver.sleep(3000);
var title = element(by.cssContainingText(main, string));
expect(title.getText()).toBe(string);
});
});
});
Ответы
Ответ 1
Так как включен ignoreSynchronization
, вы не можете использовать waitForAngular()
, что было бы решением в случае тестирования angular.
Лучшим решением здесь было бы установить тайм-аут загрузки страницы:
browser.manage().timeouts().pageLoadTimeout(10000); // 10 seconds
См. также соответствующие темы в явных ожиданиях и таймаутах: