Исправление ошибок JavaScript в Selenium WebDriver - независимый браузер

Мне интересно, сможет ли кто-нибудь расширить какие-либо из этих попыток или какие-либо другие идеи для обнаружения ошибок JS с помощью WebDriver, которые будут работать в Firefox, Chrome, Internet Explorer и Safari.

Вот что было допрошено:
Попытка - Проблема:

JSErrorCollector.jar - отлично работает, но является только решением Firefox.

Вставить JS в источник страницы. Я ввел код window.onerror в исходный код страницы с помощью WebDriver, но все начальные ошибки пропущены, потому что инъекция слишком поздняя.

BrowserMob. Я могу перехватить HTTP-ответ и планирую ввести код window.onerror в тело ответа, но автор еще не реализовал метод getBody(), поэтому только заголовки могут быть изменены, о котором я знаю. Тело всегда равно нулю для всех ответов. (Я был на веб-странице, где автор говорил о внедрении getBody(), но он еще не произошел, и я не могу найти его снова)

Fiddler - JS будет правильно вводить, но Fiddler - это только Windows, поэтому Safari не будет работать.

Родительские/дочерние окна. Я использую javascript для открытия и хранения ссылки на окно тестовых страниц. window.onerror code содержится в родительском окне, поэтому он не будет пропускать ошибки запуска в дочернем окне. Я не могу заставить это работать во что угодно, кроме Firefox и Chome. Я уже задал вопрос об этом здесь.

Selenium RC. Я не пытался его использовать, потому что все мои тесты используют WebDriver, но я знаю, что у него есть какой-то метод вроде captureNetworkTraffic(), но я не думаю, что он может быть использован в WebDriver.

всплывающее окно IE error. Я собирался использовать родительское/дочернее решение для Firefox/Chrome, а затем искать всплывающее окно IE. Это всплывающее окно отображает, когда этот параметр установлен для его отображения. Всплывающее окно является родным окном Window (я думаю), поэтому я не могу использовать селен для доступа к нему.

Прочитать консоль браузера. Я не смог найти способ сделать это во всех браузерах. В Chrome я нашел способ сохранить консольный журнал в файле, а затем прочитать файл. Это насколько я понял.

Я бы хотел, чтобы решение было похоже на BrowserMob, поскольку похоже, что это будет решение с перекрестным браузером. Существуют ли какие-либо другие прокси-серверы, которые могут быть сданы в тест и перехватить ответ? Было бы отлично, если бы был реализован метод getBody(). Мне также нравится решение parent/child, потому что оно также похоже на простое кросс-браузерное решение, но оно не работает для IE (вопрос родителя/ребенка снова).

Спасибо за любую помощь.

Ответ 1

Я не знаю, как напрямую уловить ошибки кода Javascript с помощью тестовой среды. Если бы я догадался, я бы использовал PhantomJS. Или может быть что-то вроде MITM Proxy?

В качестве побочного элемента, если вы запустите Selenium2 Grid Hub с помощью отдельного Node, вы можете передать опцию Java в JVM node, как это, что позволит прокси-серверу через Fiddler работать. Fiddler слушает (по умолчанию) на порту 8888. С помощью этого метода вы можете смотреть пакеты.

:: batch script: Set JAVA_OPTS java options to JVM
SET "JAVA_OPTS=-Dwebdriver.chrome.^
 driver=%CHROMEDRIVER%"
IF "%PROXY_TO_FIDDLER%"=="true" SET "JAVA_OPTS=%JAVA_OPTS% -DproxySet=true^
 -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888"

Я создал скрипты, которые вы можете использовать для запуска вашей сетки и node здесь. Мне кажется, что вы можете использовать этот метод, чтобы также поговорить с прокси-сервером BrowserMob на порту 8080? Я этого не пробовал.