Привет, коллеги.
Начал автоматизацию веб-приложения использующего Angular.
Для автоматизации выбрал Selenium+WebDriver и джава обёртку Protractor для тестирования ангуляра.
После инициализации каждого пейджа я выполняю проверку на отработку всех запросов на ангуляр странице с помощью метода ngDriver.waitForAngular() который описан в самом протракторе.
В итоге после определенного действия (например после клика по кнопке или ссылке) веб-приложение в самом браузере вылетает с таким еррором:
Если же waitForAngular() не вызывать, тогда имею другую проблему с кликом по элементу - метод который вызывается по клику не успевает подгружаться, и клик как бы не происходит (визуально виден лишь фокус на вебэлементе).
Похоже что waitForAngular() посылает запросы веб-приложению и оно крешится.
Напишите создателю репозитория о ошибке, так как это явная модификация протрактора под джаву (сам протрактор то js-сный).
Вобще, конечно, плохая практика браться за сырые инструменты, и чесно говоря, походив по коду, я не увидел что такого умеет протрактор, в отличии от простого вебрайвера, а какие то кастомные вейты, можно ведь и самому написать)
Для приложений на ангуляре нужны вейты полного завершения всех http запросов, что собственно и умеет делать протрактор. Как сделать такой вейт для ангуляр приложений я честно говоря не знаю, скорее больше времени придется потратить на изучение специфики самого ангуляра.
Собственно изначально я взялся за простой вебдрайвер и со старта напоролся на проблему с ожиданиями.
Скажем так, на контрол при клике подвешено событие, типа span ng-click=“open()”. Мы можем дождаться появления контрола с помощью WebDriverWait, и даже проверить его на кликабельность, но сам скрипт который отвечает за событие open() еще не успел подгрузиться. В итоге клик по элементу как бы есть, а вот ожидаемого события нет.
Есть ли какие-либо более общие способы проверки ожидания загрузки всех джава скриптов на страничке?