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