Selenium WebDriver: запускается Firefox, но не открывается URL-адрес

Я только что установил Selenium в первый раз, и у меня возникли проблемы с началом работы.

Установка прошла отлично с помощью pip:

pip install selenium

И я могу import selenium в Python.

Теперь я пытаюсь запустить следующий пример script:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title

Что происходит, так это то, что Firefox открывается, но он не переходит к " http://www.python.org" (аналогично описанному поведению в этом вопросе - он показывает только пустую страницу)

В течение примерно 60 секунд ничего не происходит, пока не возникло следующее исключение:

Traceback (most recent call last):
  File "selenium-test.py", line 4, in <module>
    driver = webdriver.Firefox()
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 61, in __init__
    desired_capabilities=capabilities)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 72, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 114, in start_session
    'desiredCapabilities': desired_capabilities,
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/webdriver.py", line 165, in execute
    self.error_handler.check_response(response)
  File "/home/usr1/.local/lib/python2.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 136, in check_response
    raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: u'<HTML><HEAD>\r\n<TITLE>Network Error</TITLE>\r\n</HEAD>\r\n<BODY>\r\n<FONT face="Helvetica">\r\n<big><strong></strong></big><BR>\r\n</FONT>\r\n<blockquote>\r\n<TABLE border=0 cellPadding=1 width="80%">\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\n<big>Network Error (tcp_error)</big>\r\n<BR>\r\n<BR>\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\nA communication error occurred: "Operation timed out"\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\nThe Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica" SIZE=2>\r\n<BR>\r\nFor assistance, contact your network support team.\r\n</FONT>\r\n</TD></TR>\r\n</TABLE>\r\n</blockquote>\r\n</FONT>\r\n</BODY></HTML>'

Это версии программного обеспечения

  • Firefox ESR 17.0.5
  • Selenium (привязки Python) 2.35.0
  • Python 2.6.6
  • Red Had Linux 6.3
  • Установлено расширение браузера Firefox WebDriver 2.35.0

Ответ 1

Хорошо, после некоторого времени поиска я заметил, что обычно проблема была ошибкой в ​​Selenium (возможно, но маловероятной) или проблемой прокси. Тем не менее, ни один из ответов, предлагающих, как решить проблему с прокси-сервером, как представляется, не работает.

Наконец, я понял: вам нужно полностью отключить все настройки прокси (переменные среды и, в моем случае, это проблема Gnome). Позже, когда вы создаете webdriver, вам необходимо передать профиль, который устанавливает параметры прокси-сервера браузера на то, что вы на самом деле используете (в моем случае автоматический URL-адрес конфигурации)

1) Отменить переменную среды http_proxy (которая используется urllib)

export http_proxy=

2) Настройки прокси-сервера с очищенным Gnome: Система → Настройки → Сетевой прокси → Выберите "Прямое подключение к Интернету"

3) Начал webdriver.Firefox() с профиля, который настраивает прокси (в этом случае это автоматическая настройка прокси)

fp = webdriver.FirefoxProfile()
# Here "2" stands for "Automatic Proxy Configuration"
fp.set_preference("network.proxy.type", 2)
fp.set_preference("network.proxy.autoconfig_url",
                  "http://proxy-address-here:8080/") 
driver = webdriver.Firefox(firefox_profile=fp)

Ответ 2

Необходимо обновить селен, если вы используете последнюю версию Firefox, вам следует использовать последнюю версию селена

Для Python введите эту команду

pip install -U selenium

Для Java, удалите старую банку и загрузите последнюю версию отсюда http://www.seleniumhq.org/download/ и присоединитесь к пути сборки. Это сработает. Счастливое тестирование с помощью Firefox

Ответ 3

Также попробуйте отключить веб-сервер localhost (127.0.0.1), если у вас есть какой-либо запуск на обычном порту 80.

В бинарнике Firefox не разрешается загружать профиль, если работает локальный сервер.

См. строку 81 в selenium\webdriver\firefox\firefox_binary.py, которая указывает на функцию/метод is_connectable (self)

def is_connectable(self):

    """Trys to connect to the extension but do not retrieve context."""
    try:
        socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        socket_.settimeout(1)
        socket_.connect(("127.0.0.1", self.profile.port))
        socket_.close()
        return True
    except socket.error:
        return False

GLHF