assert_process_still_running()和WebDriverException:消息:服务gecko



我有点沮丧,因为这个问题,我已经完全重新安装了我的树莓派。我似乎无法让壁虎司机上班。我收到以下错误消息。

pi@raspberrypi:~ $ python3
Python 3.9.2 (default, Mar 12 2021, 04:06:34)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 173, in __init__
self.service.start()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 1

壁虎驱动程序版本:

pi@raspberrypi:~ $ geckodriver -v
1645706311333   webdriver::httpapi      DEBUG   Creating routes
1645706311398   geckodriver     DEBUG   Listening on 127.0.0.1:4444

路径

pi@raspberrypi:~ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

我当然更新了raspian。

感谢未被发现的硒的回答。

我在测试中尝试了以下内容。py

import os
import psutil
PROCNAME = "geckodriver" # or chromedriver or IEDriverServer
for proc in psutil.process_iter():
# check whether the process name matches
if proc.name() == PROCNAME:
print(PROCNAME)
proc.kill()
from selenium import webdriver
browser = webdriver.Firefox()

我收到了同样的错误消息:

Traceback (most recent call last):
File "/home/pi/test.py", line 12, in <module>
browser = webdriver.Firefox()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 173, in __init__
self.service.start()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 1

你们知道为什么吗,我该怎么解决这个问题?

非常感谢!

#################更新

我尝试了以下代码:

import os
import psutil
PROCNAME = "geckodriver" # or chromedriver or IEDriverServer
for proc in psutil.process_iter():
# check whether the process name matches
if proc.name() == PROCNAME:
proc.kill()
from selenium import webdriver
browser = webdriver.Firefox()

结果是一样的。同样的错误。

pi@raspberrypi:~ $ python3 test.py
Traceback (most recent call last):
File "/home/pi/test.py", line 11, in <module>
browser = webdriver.Firefox()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 173, in __init__
self.service.start()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 1

你有什么想法吗?

我也遇到了类似的错误(除了状态代码为-6之外,其他错误相同(,但在我的情况下,这是因为我使用了不推荐使用的浏览器驱动程序初始化(直接为webdriver提供可执行路径,而不是向其传递Service对象(。

代替:

from selenium import webdriver
driver = webdriver.Firefox()

用途:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
DRIVER="geckodriver"
service = Service(executable_path=DRIVER)
driver = webdriver.Firefox(service=service)

请参阅https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/#4-硬编码位置

希望这能帮助到你或其他人。

此错误消息。。。

File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/firefox/webdriver.py", line 173, in __init__
self.service.start()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/home/pi/.local/lib/python3.9/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 1

意味着GeckoDriver的僵尸进程仍在占用您的系统内存。


解决方案

总是调用CCD_ 2方法中的CCD_;优雅地销毁WebDriver和Web客户端实例,以避免挂起的进程实例。


参考文献

你可以在中找到一些相关的详细讨论

  • PhantomJS web驱动程序留在内存中
  • Selenium:如何在不调用driver.quit((的情况下阻止geckodriver进程影响PC内存

最新更新