ProtractorJS_Selenium Server_при запуске браузера все элементы страницы редиректят на начальную страницу

selenium
protractor
webdriver
protractorjs
Теги: #<Tag:0x00007f3d443859b8> #<Tag:0x00007f3d443857d8> #<Tag:0x00007f3d443855f8> #<Tag:0x00007f3d443853f0>

(Алексей Щербин) #1

Добрый день!

Я еще зеленый в автоматизации. Но стремительно стараюсь посинеть.
Проблема такова:
Ресурс написан с использование фреймворка AngularJS 1.5.8. Все ссылки содержали "#" - https://test.com.ua/#/ до вчерашнего дня. Все тесты писались с использование ProtractorJS. Вчера же FE разработчики убрали из url этот знак, позже выяснил что они перевели AngularJS в режим HTML5.

Все тесты начали падать: Protractor открывает браузер, заходит на тестируемый сайт, кликает на нужный элемент и ждет его появления. НО! На сайте ничего не происходит. Я пробовал ставить режим ожидания на дольше и руками прощелкивать в открытом тестом браузере - все элементы страницы (ссылки, кнопки, разделы) редиректят на начальную страницу, просто обновляется виджет страницы. Видны изменения только в теге, отвечающий за название вкладки браузера.

В чем может быть причина? Я подозреваю что проблема в WebDriver. Помогите, пожалуйста. А то это напоминает игру на выживание.

Если просто самому открыть браузер - все работает корректно.

Webdriver-manager 12.0.6
Protractor 5.1.1
Jasmine 2.6.0
NodeJS 7.8.0
Chrome 58.0.3029.110 (64-bit)


(Алексей Щербин) #2

Предположил, что может страницу не корректно подгружает. Но нет. Я вывел в консоль содержание тега href, и там была ссылка, которая должна открываться.


(Oleksandr Khotemskyi) #3

Попробуйте проверить cookie, session/local storage. Возможно это ошибка доступа.

В любом случае - это особенность вашего приложения, и без просмотра самого сайта ничего сказать нельзя


(Алексей Щербин) #4

Так а разве cookie, session/local storage не игнорируются webdriver'ом при запуске тестов? При чем стандартным запуском браузера с рабочего стола в штатном режиме продукт и переходы/клики работают корректно.


(Oleksandr Khotemskyi) #5

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


(Алексей Щербин) #6

Благодаря помощи xotabu4'а и подрядчика по FE, решили проблему. Если кому интересно. Для метода browser.get() я использовал ссылку с встроенной первичной авторизацией. Оказалось что html5 режим использует js функцию history.pushState. Но в браузерах есть правило запрета подмены домена(можно менять только в рамках того же окружения), и браузер в URL убирает пару логин-пароль. Но в переменной domain сохраняет путь https://логин:пароль@test.com. И получается, что https://test.com/about для него является другим доменом - они не совпадают.

Решение:

browser.get('https://логин:пароль@test.com/') //осуществляется запись в текущую сессию данных первичной авторизации
browser.get('https://test.com/');