Думаю, что уже неоднократно поднимался этот вопрос, но я пока не нашла ответа.
Ситуация следующая:
Есть форма, которую клиент заполняет и сабмитит. Далее происходит переход на одну из страниц:
-Страница ввода дополнительных данных
-Самописанная заглушка
-Тестовая среда платежной системы
Страница ввода доп данных может быть, а может ее и не быть. Из тестов мы однозначно не можем это узнать. Раньше я ожидала по урл(и исходя из урл знала что открылось), но сейчас возникла ситуация при которой мы свою страничку открываем во фрейме и урл не меняется.
Единственный вариант у меня сейчас:
Дождаться, что страница прогрузилась, прошли все редиректы
“Посмотреть” открыта ли форма ввода дополнительных данных
Эта промежуточная страница-2fa. Нам просто нужно пройти ее при необходимости. Регулируется это конфигами, поэтому я даже и не знаю исходных “нужных” данных. Да и в тесте это просто кусочек интеграционки, поэтому работаем с тем, что есть
У меня было ожидание, что URL содержит один из трех входных слов. По ним я могла определить куда мы перешли
Очень просто - загружаете страницу в Slow 3G и наблюдаете за подгрузкой элементов.
Находите самый медленный, на него и цепляетесь.
Плюс можете еще парочку выбрать.
Ну и на самые главные элементы выставите waitUntil visible and enabled.
Самая большая проблема в том, что я не знаю заранее будет ли промежуточная страница или нет.
Завязалась на ожидание того, что урл текущего айфрейма содержит одно из трех ключевых слов и уже исходя из того куда перешли, переходим к следующим ожиданиям
Если вы не знаете будет ли страница или нет и вам вообще это безращлично, лишь бы пройти ее если вдруг есть, внедрите цикл в котором вы будете проверять очень быстро появилась ли страница А на которой нужно делать действия или Б нужная вам страница
do {
if (page_B.isLoaded(1_second){
break; // нужная страница найдена - прерываем цикл
}
if (page_a.isLoaded(1_second)){
page_a.doStuffOnPage_A() // появилась доп. страница - проходим ее
break; // прерываем цикл
}
} while(//some condition) // например в течении 5 секунд проверяем