Я использую zombie.js для автоматизации тестирования действий браузера, в этом случае нажав кнопку, чтобы отправить форму.Zombie.js pressButton как получить доступ к пост-аякс-версии браузера?
Вне тестов в реальном браузере при нажатии кнопки запускается запрос AJAX. Когда запрос AJAX завершается, в тело документа добавляются два элемента div.alert
.
Тест ниже нажимает кнопку и запускает запрос, но когда тест впоследствии запрашивает документ, ищущий ожидаемые элементы div, он не может их найти. Я считаю, что тест запрашивает «старую» версию документа, которая существует до завершения вызова AJAX. Мой вопрос: как я могу получить доступ к версии документа, который существует после вызов AJAX завершает и добавляет элементы?
context("when visited on the 'new' page", function(){
before(function(){ return browser.visit('/'); });
before(function(){ return browser.clickLink('new'); });
context("when submitted with invalid values", function(){
before(function(){
return browser.pressButton("Submit")
})
it("flash should include error messages", function(){
var messages = browser.queryAll(".alert")
console.log(messages)
expect(messages.length).toEqual(2)
})
})
})
Примечание: Я смотрел в тесты zombie.js и найти применение async
и await
, но когда я пытаюсь использовать эти ключевые слова в моем файле .js, он не признает их. Это может быть отдельной проблемой, но если для решения требуется async/await, как включить mocha для распознавания этих ключевых слов?
'асинхр/await' является функция ES7. Возможно, вам удастся каким-то образом включить его. Однако я не понимаю, как это поможет вам. Проблема заключается в том, что ваш тестовый режим ожидает изменения DOM. Я вообще не использую Zombie, но я использую Selenium, который поставляется с функциями, которые делают именно это. Если у Zombie нет эквивалента, вы всегда можете опросить DOM. – Louis
Спасибо за рекомендацию selenium – s2t2
Мне нужно изменить мой предыдущий комментарий: 'async/await' не попал в ES7 (=== ES2016). ES2016 был одобрен, как вчера (который я узнал только сейчас), но они отрезали «асинхронный/ждущий» от него. Это может быть частью следующего пересмотра языка. – Louis