it-swarm.com.ru

WebDriverException: Сообщение: недопустимый аргумент: невозможно завершить процесс с GeckoDriver, Selenium и Python на RaspberryPi3

Сервер: Raspberry Pi 3
ОС: Dietpi - версия 159
Версия Geckodriver: 0,22 для руки
Версия Firefox: 52.9.0
Python версия: 3.5
Версия Selenium: 3.14.1 

Gecko является исполняемым файлом и находится в/usr/local/bin /

from Selenium import webdriver
from Selenium.webdriver.common.by import By
from Selenium.webdriver.support.ui import WebDriverWait
from Selenium.webdriver.support import expected_conditions as EC
from Selenium.webdriver.firefox.options import Options
import time



options = Options()
options.set_headless(headless=True)
driver = webdriver.Firefox(firefox_options=options)

print('Need your login credential')
username = input('What is your username?:\n')
password = input('What is your password?:\n')
...
...

Результат:

[email protected]:~# python3.5 ITE-bot.py 
Traceback (most recent call last):
  File "ITE-bot.py", line 12, in <module>
    driver = webdriver.Firefox(firefox_options=options)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process

Есть идеи, что не так? Я попробовал Google без удачи.

6
Chokoladekiks

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

Selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process

... подразумевает, что GeckoDriver не смог инициировать/создать новый сеанс WebBrowsing, т. е. Firefox Browser.

Ваша главная проблема - несовместимость между используемой вами версией двоичных файлов:

  • Ваша версия GeckoDriver - 0.22.0.
  • В заметках о выпуске GeckoDriver v0.21.0 (2018-06-15) четко упоминается следующее:

    • Firefox 57 (и выше)

    • Селен 3.11 (и выше)

  • Ваша Firefox версия 52.9.0.

Таким образом, существует явное несоответствие между GeckoDriver v0.22.0 и Firefox Browser v57

Решение

  • Обновите GeckoDriver до GeckoDriver v0.22.0 level.
  • GeckoDriver присутствует в указанном месте.
  • GeckoDriver имеет разрешение на выполнение для пользователей без полномочий root.
  • Обновите версию Firefox до уровня Firefox v62.0.2.
  • Очистить ваш Project Workspace через ваш IDE и Rebuild ваш проект только с необходимыми зависимостями.
  • Если ваша базовая версия веб-клиент устарела, удалите ее через Revo Uninstaller и установите последнюю GA и выпущенную версию веб-клиент).
  • Запустите ваш Test как пользователь без полномочий root.
9
DebanjanB

Если вы используете Firefox в системе без дисплея, убедитесь, что вы используете режим без головы.

from Selenium import webdriver
from Selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)

Также убедитесь, что у вас есть совместимые версии Firefox, Selenium и Geckodriver: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html

3
NFern

Да, установлен флажок Запустить Xvfb до того, как сборка сможет устранить проблему, но если у вас есть задание, такое как конвейер или многоотраслевой конвейер, этот параметр не отображается. В узле вашей сетки Selenium, который вы хотите выполнить для проверки, вам нужно:

1- Установите Xvfb: apt install xvfb

2- Выполнить Xvfb: /usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 & export DISPLAY=":99"

3- Перезапустите ваш узел, например: Java -jar Selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -Host #.#.#.# -port 1991

3
conde

Я смог исправить это, запустив свои тесты с Xvfb. Я запускал их на удаленном сервере.

Я использовал Jenkins, поэтому я установил флажок, который выглядел так:

 Credit to https://www.obeythetestinggoat.com/book/chapter_CI.html

Кредит https://www.obeythetestinggoat.com/book/chapter_CI.html

0
Daniel Butler