Тут нам пригодится browsermob-proxy. В нашем случае мы будем использовать её как локально поднимаемую, динамически конфигурируемую проксю для webdriver. Направляя наш браузер на эту проксю, мы можем творить всякие непотребства (например, подменять юзер-агент или любые другие заголовки http-запросов; смотреть, какие запросы делаются при загрузке страницы и т.д.). Полные исходники рабочего проекта я выложил на github. Давайте посмотрим на код теста. Первое что мы делаем - стартуем прокси. Задача прокси-сервера в данном случае - добавить в начало страницы наш js-код, который будет хэндлить ошибки.
После этого нужно сказать вебдрайверу чтобы он использовал эту прокси. Для этого создаём DesiredCapabilities и устанавливаем в них наш прокси.
Всё, приготовления закончены. Теперь создаём драйвер с подготовленными Capabilities и запрашиваем нашу страничку. Остаётся проверить, что у нас лежит в errors.
Как вы могли заметить, этот код не идеален =). Например, я использовал Before/After(Class) методы для работы с драйвером и проксёй. Предлагаю желающим потренироваться в написании рул сделать пулл-реквест, в котором создать рулы, берущие на себя заботу о драйвере и прокси. Так же было бы неплохо заменить метод collectErrorMessage красивым матчером - с удовольствием приму и этот pull-request. Чтобы сделать этот тест окончательно кросс-браузерным, остаётся только добавить второй параметр (имя браузера) на вход теста и на его основе создавать экземпляр нужного браузера. И еще раз ссылка на исходники jserror-example.
comments powered by Disqus