WebDriverException: Сообщение: недопустимый аргумент: невозможно завершить завершенный процесс с помощью GeckoDriver, Selenium и Python на RaspberryPi3
Сервер: малина Pi 3
ОС: Dietpi - версия 159
Версия Geckodriver: 0,22 для оружия
Версия Firefox: 52.9.0
Версия для Python: 3.5
Версия для селена: 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 без везения.
Ответы
Ответ 1
Это сообщение об ошибке...
selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process
... подразумевает, что GeckoDriver не смог инициировать/создать новый сеанс веб-просмотра, т.е. сеанс браузера Firefox.
Ваша основная проблема заключается в несовместимости между версиями двоичных файлов, которые вы используете, следующим образом:
Таким образом, существует явное несоответствие между GeckoDriver v0.22.0 и браузером Firefox v57
Решение
- Обновите GeckoDriver до уровня GeckoDriver v0.22.0.
- GeckoDriver присутствует в указанном месте.
- GeckoDriver имеет разрешение на выполнение для пользователей без полномочий root.
- Обновите версию Firefox до уровня Firefox v62.0.2.
- Очистите рабочее пространство проекта с помощью среды IDE и перестройте проект только с необходимыми зависимостями.
- Если версия базового веб-клиента устарела, удалите ее с помощью Revo Uninstaller и установите последнюю версию GA и выпущенную версию веб-клиента.
- Выполните свой тест Selenium как пользователь без полномочий root.
Ответ 2
Если вы используете 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/Support.html
Ответ 3
Да проверено. Запустите 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
Ответ 4
Я был в режиме без головы, используя правильные версии всего, и единственный способ выйти из этого сообщения об ошибке не состоял в том, чтобы выполнить тест селена от имени root
Ответ 5
Я использовал:
- Кодекс VS
- Linunx/Ubuntu: 18,10
- Nightwatch.js
Моя проблема заключалась в том, что я пытался запустить Nightwatch (который автоматически запускает GeckoDriver) из терминала VS Code.
Ответ 6
Я смог исправить это, выполнив мои тесты с помощью Xvfb. Я запускал их на удаленном сервере.
Я использовал Jenkins, поэтому я проверил коробку, которая выглядела так:
Подпишитесь на https://www.obeythetestinggoat.com/book/chapter_CI.html