Как программно остановить загрузку страницы в firefox?

Я провожу несколько тестов с 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, что доставит вам несколько головных болей ...

16
задан Cœur 27 April 2017 в 18:29
поделиться