Я пишу тест E2E с транспортиром. Мне нужно было получить информацию из браузера и выполнить шаг несколько раз.Тесты E2E с несколькими страницами с информацией из браузера
Я тестирую один экран, который начнется, когда А
- пользователь нажимает «Start»
- земли на новой странице
- Рабочий процесс ниже вызывается со счетом передается в качестве аргумента
id
Идентификатор html не изменяется. значение изменяется при повторном запросе после отправки текущей формы.
for(i = 0 ; i < count ; i++){
console.log("counter is "+i);
element(by('id')).evaluate('value').then(function(v) {
// do some action on UI based on v
element(by('id1')).sendKeys(v+v);
// submit etc.,
// some angular code runs in the frontend.
}
// need to wait since webdriver jumps to the next one without this completing
}
Много сообщений блог/Документация предполагает, вы не можете использовать его в петле, но не предполагает какой-либо альтернативный способ сделать это.
Любые предложения оценены.
Никогда не используйте инструкции протрансформатора внутри цикла: Простая причина в том, что API-интерфейс webdriverJS (транспортир) является асинхронным. Операторы элементов возвращают обещание, и это обещание находится в неразрешенном состоянии, а код ниже операторов продолжает выполняться. Это приводит к непредсказуемым результатам. Следовательно, рекомендуется использовать рекурсивные функции вместо циклов.
Источник: http://engineering.wingify.com/posts/angularapp-e2e-testing-with-protractor/
Edit: обновленный вопрос с подробной информацией о процессе.
вы можете поместить некоторые детали в вопросе .. как .. как это 'значение count' определяется и делает' id' изменить с каждое значение в цикле. Может быть, какой-то контекст лучше ответить на это лучше – AdityaReddy
'count' передается из другой функции. Элемент 'id' изменяется во внешнем интерфейсе, но значение во время оценки не изменяется. также обновит вопрос. – Sairam