Я провожу несколько тестов с WebDriver и Firefox.
У меня проблема со следующей командой:
WebDriver.get (www.google.com);
С помощью этой команды WebDriver блокируется до тех пор, пока не будет запущено событие onload. Хотя обычно это занимает секунды, на сайтах, которые никогда не загружаются, это может занять несколько часов.
Я бы хотел прекратить загрузку страницы по истечении определенного времени ожидания, каким-то образом имитируя кнопку остановки Firefox.
Сначала я попытался выполнить следующий JS-код каждый раз, когда пытался загрузить страницу:
var loadTimeout=setTimeout(\"window.stop();\", 10000);
К сожалению, это не работает, вероятно, потому что:
Из-за порядка, в котором скрипты загружен, метод stop () не может остановить загрузку документа, в котором он содержится 1
ОБНОВЛЕНИЕ 1: Я попытался использовать SquidProxy для добавления таймаутов соединения и запросов, но проблема не исчезла.
Сегодня я обнаружил одну странную вещь: один веб-сайт, который никогда не прекращал загружаться на моем компьютере (FF3.6 - 4.0 и Mac Os 10.6.7), нормально загружался в других браузерах и / или компьютерах.
ОБНОВЛЕНИЕ 2: Проблема очевидно, можно решить, указав Firefox не загружать изображения. надеюсь, после этого все будет работать ...
Я бы хотел, чтобы у WebDriver был лучший драйвер Chrome для его использования. Firefox разочаровывает меня каждый день!
ОБНОВЛЕНИЕ 3: В Selenium 2.9 добавлена новая функция для обработки случаев, когда драйвер зависает. Это можно использовать с FirefoxProfile
следующим образом:
FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("web");
firefoxProfile.setPreference("webdriver.load.strategy", "fast");
Я опубликую, работает ли это после того, как попробую.
ОБНОВЛЕНИЕ 4: в конце ни один из вышеперечисленных методов не сработал. Я заканчиваю тем, что "убиваю" нити, которые так долго заканчиваются. Я планирую попробовать Ghostdriver , который представляет собой удаленный WebDriver, использующий PhantomJS в качестве серверной части. PhantomJS - это сценарий WebKit без заголовка, поэтому я не ожидаю, что у него будут проблемы с настоящим браузером, таким как firefox. Для людей, которые не обязаны использовать firefox (в целях сканирования), я обновлю с результатами
ОБНОВЛЕНИЕ 5: Время для обновления. Использование ghostdriver 1 в течение 5 месяцев. 1 вместо FirefoxDriver могу сказать, что я действительно доволен его производительностью и стабильностью. У меня были случаи, когда у нас не было надлежащего поведения, но похоже, что в целом ghostdriver достаточно стабилен. Так что, если вам, как и мне, нужен браузер для сканирования / сканирования веб-страниц, я рекомендую вам использовать ghostdriver вместо firefox и xvfb, что доставит вам несколько головных болей ...