Я запускаю несколько тестов с помощью 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 (обходные цели), я обновлю результаты
UPDATE 5: время обновления. Используя в течение 5 месяцев ghostdriver 1.1 вместо FirefoxDriver, я могу сказать, что я действительно доволен его производительностью и стабильностью. У меня есть некоторые случаи, когда у нас нет соответствующего поведения, но похоже, что в целом ghostdriver достаточно стабилен. Поэтому, если вам нужно, как и я, браузер для сканирования/веб-скрепок, я рекомендую вам использовать ghostdriver вместо firefox и xvfb, что даст вам несколько головных болей...