2015-11-24 2 views
3

Я пишу некоторые функциональные тесты с помощью Sauce Labs (с использованием Selenium + Webdriver + Nodejs). Один из моих тестов выглядит следующим образом:WebDriver wait n seconds

it('Should Not Have Any Errors', function(done) { 
     browser 
      .get(host + '/test.live.cgi?view=pixelTest') 
      .elementById('errorHolder') 
      .text() 
      .should.eventually.equal('[]') 
      .nodeify(done); 
    }); 

Как бы идти о ждать 10 секунд между загрузкой страницы и проверки текста элемента errorHolder в? Я просматривал api https://github.com/admc/wd/blob/master/doc/api.md, но все функции ожидания выглядят так, как будто им нужна функция asserter для проверки того, является ли данное условие истинным. Я пытаюсь использовать метод waitFor(opts, cb) -> cb(err), но я не уверен, как его связывать с обещаниями. Я могу сделать это?

ответ

5

Нашел ответ в функции сна, предоставленной WebDriver. Теперь код выглядит так:

it('Should Not Have Any Errors', function(done) { 
     browser 
      .get(host + '/test.live.cgi?view=pixelTest') 
      .sleep(10000) 
      .elementById('errorHolder') 
      .text() 
      .should.eventually.equal('[]') 
      .nodeify(done); 
    }); 
3

Вы можете использовать:

.delay(10) 

Если вы действительно должны использовать задержку, хотя, рассмотреть вопрос об определении его в качестве переменной. У вас будет больше контроля за задержками по всему вашему коду, и вам будет проще искать, если вам нужно реорганизовать.

Изменить, чтобы добавить:

вы также можете использовать:

.then(function() { 
    browser.waitForElementById('errorHolder'); 
}) 
+0

Не работает. Тест забросил ошибку: объект не имеет задержки метода – isaac9A