WebDriverException:消息:无效参数:无法在RaspberryPi3上使用GeckoDriver,Selenium和Python杀死已退出的进程 [英] WebDriverException: Message: invalid argument: can't kill an exited process with GeckoDriver, Selenium and Python on RaspberryPi3

查看:93
本文介绍了WebDriverException:消息:无效参数:无法在RaspberryPi3上使用GeckoDriver,Selenium和Python杀死已退出的进程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

服务器:Raspberry 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')
...
...

输出:

root@RPi3:~# 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却没有运气.

解决方案

拇指法则

在启动过程中导致浏览器崩溃的常见原因是在Linux上以 root 用户( administrator )运行WebDriver启动的浏览器.尽管可以在创建WebDriver会话时通过传递--no-sandbox标志来解决此问题,但这种配置不受支持,因此不建议使用.您需要配置环境以改为以普通用户身份运行浏览器.


此错误消息...

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

...表示 GeckoDriver 无法启动/产生新的 WebBrowsing会话,即 Firefox浏览器会话.

您的主要问题是所使用的二进制文件版本之间的不兼容性:

  • 您的 GeckoDriver 版本是 0.22.0 .

  • GeckoDriver v0.21.0(2018-06-15)的发行说明明确提及以下内容:

  • Firefox 57(及更高版本)

  • 硒3.11(及更高版本)

  • 您的 Firefox 版本是 52.9.0 .

因此, GeckoDriver v0.22.0 Firefox浏览器v57

之间存在明显的不匹配

解决方案

  • GeckoDriver 升级到 GeckoDriver v0.22.0 级.
  • GeckoDriver位于指定位置.
  • GeckoDriver对非root用户用户具有可执行权限.
  • Firefox 版本升级到 Firefox v62.0.2 级别.
  • 通过 IDE
  • 清理您的项目工作区重建仅具有所需依赖项的项目.
  • 如果您的基本 Web客户端版本太旧,请通过来卸载. Revo Uninstaller 并安装最新版本的 Web客户端 GA和发行版本.
  • 非root用户的身份执行 Selenium Test .

GeckoDriver Firefox浏览器兼容性图表

Server: Raspberry Pi 3
OS: Dietpi - version 159
Geckodriver version: 0.22 for arm
Firefox version: 52.9.0
Python version: 3.5
Selenium version: 3.14.1

Gecko is executable, and is located in /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')
...
...

Output:

root@RPi3:~# 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

Any idea what is wrong? I've tried google without luck.

解决方案

Thumb rule

A common cause for Browsers to crash during startup is running WebDriver initiated Browsers as root user (administrator) on Linux. While it is possible to work around this issue by passing --no-sandbox flag when creating your WebDriver session, such a configuration is unsupported and highly discouraged. You need to configure your environment to run Browser as a regular user instead.


This error message...

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

...implies that the GeckoDriver was unable to initiate/spawn a new WebBrowsing Session i.e. Firefox Browser session.

Your main issue is the incompatibility between the version of the binaries you are using as follows:

  • Your GeckoDriver version is 0.22.0.

  • Release Notes of GeckoDriver v0.21.0 (2018-06-15) clearly mentions the following:

  • Firefox 57 (and greater)

  • Selenium 3.11 (and greater)

  • Your Firefox version is 52.9.0.

So there is a clear mismatch between GeckoDriver v0.22.0 and the Firefox Browser v57


Solution

  • Upgrade GeckoDriver to GeckoDriver v0.22.0 level.
  • GeckoDriver is present in the specified location.
  • GeckoDriver is having executable permission for non-root users.
  • Upgrade Firefox version to Firefox v62.0.2 levels.
  • Clean your Project Workspace through your IDE and Rebuild your project with required dependencies only.
  • If your base Web Client version is too old, then uninstall it through Revo Uninstaller and install a recent GA and released version of Web Client.
  • Execute your Selenium Test as a non-root user.

GeckoDriver, Selenium and Firefox Browser compatibility chart

这篇关于WebDriverException:消息:无效参数:无法在RaspberryPi3上使用GeckoDriver,Selenium和Python杀死已退出的进程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆