Исправление ошибок 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? Я этого не пробовал.