Как добавить ожидание теста?

Я использую WebdriverIO для следующего теста

webdriverio
    .remote(options)
    .init()
    .url('http://www.google.com')
    .getTitle().then(function(title) {
        console.log('Title was: ' + title);
    })
    .end(); 

Однако мой интернет-провайдер предоставляет веб-страницу проверки на вирусы между google.com, поэтому тест всегда возвращает заголовок страницы проверки на вирусы. Как я могу убедиться, что результат всегда возвращает Google?


person Adam Lee    schedule 28.03.2017    source источник


Ответы (2)


Использование пауз в тестах — плохая практика. Вместо этого лучше использовать явное ожидание.

Например. вы можете использовать метод waitUntil, предоставляемый Wdio API. Таким образом, вы можете создать вспомогательную функцию для ожидания ожидаемого URL-адреса.

Вот пример в ES6:

function waitForUrl(url, timeout) {
  browser.waitUntil(() => browser.getUrl().includes(url)
  }, timeout, `Expected url must be ${url}`)
}

Вы можете просто передать функцию (или обещание) в качестве условия ожидания вместе с тайм-аутом (в мс), сообщением об ошибке и интервалом (также в мс, значение по умолчанию — 500 мс). Итак, waitUntil будет ждать, пока это условие не будет выполнено с истинным значением. В противном случае будет выброшена ошибка.

person Andrii    schedule 13.04.2017

Вы можете использовать функцию pause(time), чтобы приостановить тест на некоторое время, пока вы не будете перенаправлены в Google.

webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.pause(5000)
.getTitle().then(function(title) {
    console.log('Title was: ' + title);
})
.end(); 
person sidag95    schedule 04.04.2017
comment
Не используйте паузы в своем тесте. Вместо этого используйте явное ожидание. - person Andrii; 14.04.2017