selenium.common.exceptions.WebDriverException: Сообщение: соединение отклонено при попытке открыть браузер Firefox через GeckoDriver в Raspberry-pi3 - PullRequest
0 голосов
/ 12 мая 2018

Привет, у меня есть Raspberry Pi 3 и я решил попробовать запустить Селен с Python 3. Я установил его, используя "pip3 install selenium", и ошибок не было.После того, как я сделал небольшой тестовый скрипт с этим кодом:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# create a new Firefox session
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.maximize_window()

# Navigate to the application home page
driver.get("http://www.google.com")

# get the search textbox
search_field = driver.find_element_by_id("lst-ib")
search_field.clear()

# enter search keyword and submit
search_field.send_keys("Selenium WebDriver Interview questions")
search_field.submit()

# get the list of elements which are displayed after the search
# currently on result page using find_elements_by_class_name method
lists= driver.find_elements_by_class_name("_Rm")

# get the number of elements found
print ("Found " + str(len(lists)) + " searches:")

# iterate through each element and print the text that is
# name of the search

i=0
for listitem in lists:
   print (listitem.get_attribute("innerHTML"))
   i=i+1
   if(i>10):
      break

# close the browser window
driver.quit()

, но он выдает ошибку:

Traceback (most recent call last):
  File "/home/pi/SeleniumTest.py", line 5, in <module>
    driver = webdriver.Firefox()
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
    keep_alive=True)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 245, 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 314, 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

Любая помощь приветствуется, спасибо:)

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Это сообщение об ошибке ...

selenium.common.exceptions.WebDriverException: Message: connection refused

... означает, что GeckoDriver не смог инициировать / порождать новый веб-клиент сеанс / экземпляр успешно.

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

Однако вам может потребоваться передать ключ executetable_path вместе со значением 1017 *, относящимся к абсолютному пути GeckoDriver как аргумент при инициализации WebDriver и WebBrowser следующим образом:

from selenium import webdriver

# create a new Firefox session
driver = webdriver.Firefox(executable_path=r'/path/to/geckodriver')

Дополнительные рекомендации

  • Обновление Селен до текущих уровней Версия 3.11.0 .
  • Обновление GeckoDriver до GeckoDriver v0.20.1 уровень.
  • Убедитесь, что GeckoDriver присутствует в указанном месте, как указано в аргументе executetable_path .
  • Убедитесь, что GeckoDriver имеет разрешение на выполнение для пользователей без полномочий root.
  • Обновление Firefox версии до Firefox v59.0.2 уровней.
  • Очистите ваше Рабочее пространство проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
  • Используйте CCleaner , чтобы стереть все рутинные операции ОС до и после выполнения Test Suite .
  • Если ваша базовая версия Web Client устарела, удалите ее через Revo Uninstaller и установите последнюю версию GA и выпущенную версию Web Клиент .
  • Возьмите Перезагрузку системы .
  • Выполните Test как пользователь без полномочий root.
  • Всегда вызывайте driver.quit() в методе tearDown(){} для закрытия и уничтожения WebDriver и Веб-клиента экземпляров изящно.
0 голосов
/ 12 мая 2018

вам нужно установить geckodriver, это требование, я не знаю, доступен ли apt, но если нет, вы можете скачать версию armv7hf со страницы официального релиза на GitHub https://github.com/mozilla/geckodriver/releases

Если вам нужно установить его вручную, извлеките исполняемый файл geckodriver в каталог по пути, обычно /usr/local/bin или '$ HOME / bin`

EDIT: Другая возможная причина - запуск селен по SSH, в этом сценарии у вашего RPi не будет дисплея, к которому будет прикреплено окно firefox, и он вылетит, чтобы решить эту проблему, вам нужно запустить Firefox в режиме без головы, например:

# create a new Firefox session
opt = webdriver.FirefoxOptions()
opt.set_headless()
driver = webdriver.Firefox(options=opt)
# here instead of maximize you have to set a custom size
driver.set_window_size(1920, 1080)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...