Мне интересно, сможет ли кто-нибудь расширить какие-либо из этих попыток или какие-либо другие идеи для обнаружения ошибок 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 (вопрос родителя/ребенка снова).
Спасибо за любую помощь.