Python Selenium «Отказ в соединении» возникает в терминале ssh, но не в обычном терминале - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь запустить скрипт Python, содержащий использование веб-драйвера selenium, по SSH с использованием PuTTY.При выполнении команды «sudo python3.4 [filepath] .py» в терминале SSH возникает ошибка «Отказано в соединении», но при выполнении той же команды на серверном терминале она работает, как и должна.

Сервер Raspberry pi работает под управлением Raspbian и использует geckodriver для веб-драйвера.Компьютер, к которому подключается, использует SSH под управлением Windows 10.

Я попытался набрать "export DISPLAY =: 0" перед запуском скрипта python.Я также попытался запустить команду через gnome-терминал, надеясь, что это заставит пи загружать графический интерфейс, поскольку я думал, что драйвер селена, являющийся графическим, может быть частью проблемы.

Я очень новичок в SSH: еще и довольно плохо знаком с селеном.

Чтобы сделать его проще, чем моя настоящая программа, это всего лишь скрипт для запуска селен, который все еще показывает ту же проблему,

from selenium import webdriver

driver = webdriver.Firefox(executable_path=r'/home/pi/Downloads/gecko3/geckodriver')
driver.get('www.google.com')

driver.quit()

Вывод (входящий в мой SSH-клиент) выглядит следующим образом:

Traceback (most recent call last):
  File "/home/pi/Desktop/webtest.py", line 3, in <module>
    driver = webdriver.Firefox(executable_path=r'/home/pi/Downloads/gecko3/geckodriver')
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.4/dist-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 голосов
/ 12 мая 2019

У меня вчера была та же самая проблема, и она связана с безопасностью.следите за процессом исполнения для gecodriver / firefox / python и убедитесь, что пользователь во время выполнения соответствует вашим ожиданиям.в моем случае он работал как IUSR (IIS), когда я изменил его на NETWORK_SERVICES, он работал нормально.Это потому, что он пытался создать временный профиль в каталоге Windows.у вас может быть похожая проблема.

вам также может понадобиться создать личный профиль и использовать его в своем коде

ffprofile = webdriver.FirefoxProfile (r "C: .. \ p1s7i6ei.webScraper")WD = webdriver.Firefox (возможности = ffCap, параметры = WDOptions, service_log_path = os.devnull, firefox_profile = ffprofile)

https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...