Селен WebDriverException: «соединение отказано» происходит на Пи без головы - PullRequest
0 голосов
/ 07 октября 2018

Редактировать: Это не похоже на дубликат, потому что ни одно из предложений в ответах на пост не исправит ошибку.Вот файл geckodriver.log после запуска сценария:

1538960169585   mozrunner::runner       INFO    Running command: "/usr/bin/firefox" "-marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile.xicOi27i6laa"
1538960178656   Marionette      INFO    Listening on port 2828
^G[Child 17792] ###!!! ABORT: Aborting on channel error.: file /build/firefox-esr-YKrXxr/firefox-esr-52.9.0esr/ipc/glue/MessageChannel.cpp, line 2152
[Child 17792] ###!!! ABORT: Aborting on channel error.: file /build/firefox-esr-YKrXxr/firefox-esr-52.9.0esr/ipc/glue/MessageChannel.cpp, line 2152

Я не могу создать экземпляр webdriver, работающий на python 3.5, на Raspberry Pi 3 B + без головы.Я установил

sudo apt-get install python-pip iceweasel xvfb pip install pyvirtualdisplay selenium

для установки зависимостей.Когда я запускаю базовый сценарий для создания Selen WebDriver, я получаю сообщение WebDriverException: Message: connection refused.

Мой код:

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

profile = webdriver.FirefoxProfile()
profile.native_events_enabled = False

driver = webdriver.Firefox(profile)

Сообщение об ошибке:

 Traceback (most recent call last):
  File "simpletest", line 10, in <module>
    driver = webdriver.Firefox(firefox_profile=profile)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused

Этот ответ с другого форума указывает, что вышеуказанный код должен работать.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 января 2019

Я столкнулся с той же проблемой с моим новым Raspbery Pi 3 B +.Я исправил ошибку, установив старую версию geckodriver.Я использую Raspbian GNU / Linux 9 (растяжка).Вы можете посмотреть свою версию операционной системы, если вы запускаете cat /etc/os-release в терминале bash на вашем Raspberry Pi.Вы получите вывод, который выглядит следующим образом:

PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

Если вы используете Raspbian, то, когда вы установили Firefox, вы, вероятно, получили версию 52.9.0 или более раннюю.Вы можете проверить это, запустив firefox-esr -version из терминала bash на Raspberry Pi.Обратите внимание, что iceweasel - это действительно firefox-esr.См. https://lwn.net/Articles/676799/ для более подробной информации.Версия 52.9.0 является самой последней полностью поддерживаемой версией для Raspbian, и даже если вы запустите sudo apt-get update или sudo apt-get upgrade firefox-esr, версия не изменится.Фактически, sudo apt-get upgrade firefox-esr сообщит вам, что firefox-esr is already the newest version (52.9.0esr-1~deb9u1).

Поскольку вы не можете обновить Firefox, вам необходимо установить старую версию geckodriver.На странице https://github.com/mozilla/geckodriver/releases/, он рекомендует Firefox 55.0 и выше и Selenium 3.5 и выше для geckodriver v0.19.0.Поэтому вы должны загрузить и установить geckodriver v0.18.0.Следующие команды должны сделать трюк:

curl -O https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-arm7hf.tar.gz
tar -xzvf geckodriver-v0.18.0-arm7hf.tar.gz
sudo cp geckodriver /usr/local/bin/

Примечание: вам может потребоваться запустить sudo chmod +x /usr/local/bin/geckodriver, если вы получаете ошибку разрешения.

...