通过GeckoDriver Firefox和Selenium执行测试时出现“处理紧急中止时线程紧急”错误

时间:2018-08-09 03:51:23

标签: python-3.x selenium geckodriver panic

我是编码和网页抓取的新手。但是,在尝试通过简单的代码用浏览器打开URL时,我已经遇到了错误。

源代码

import sys
import urllib.request
import importlib
import time
from bs4 import BeautifulSoup
from selenium import webdriver
importlib.reload(sys)
url = 'http://www.python.org'
driver = webdriver.Firefox() 
driver.get(url)
browser.close()

结果:

Traceback (most recent call last):
  File "D:/Documents and Settings/Administrator/桌面/Old Data/WS/111.py", line 9, in <module>
    driver = webdriver.Firefox()
  File "C:\Python34\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 157, in __init__
    self.service.start()
  File "C:\Python34\lib\site-packages\selenium\webdriver\common\service.py", line 98, in start
    self.assert_process_still_running()
  File "C:\Python34\lib\site-packages\selenium\webdriver\common\service.py", line 111, in assert_process_still_running
    % (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 3221225501

这是Geckodriver的日志

1533786140718   geckodriver INFO    geckodriver 0.21.0 (c7d3022be6420de1ca4076d932aa32b299f3ea10 2018-06-14)
thread panicked while processing panic. aborting.
1533786140734   geckodriver INFO    Listening on 127.0.0.1:2472
thread panicked while processing panic. aborting.

1 个答案:

答案 0 :(得分:0)

此错误消息...

Traceback (most recent call last):
  File "D:/Documents and Settings/Administrator/??/Old Data/WS/111.py", line 9, in <module>
  .
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 3221225501  

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

您需要处理以下几个问题:

  • 根据您的代码块,无需导入sysurllib.requestimportlibtime,因此可以将其删除。
  • 错误跟踪日志中可以明显看出,您正在以{strong>管理员的身份执行@Test。始终以 非root用户 用户的身份执行@Test
  • 您可能正在使用 Windows XP 作为基础的 OS
  • 始终调用driver.quit()方法来优雅地关闭和销毁 WebDriver Web Client 实例。

thread panicked while processing panic,Rust,Panic和WinXP

根据 2016-10-10 GeckoDriver v0.11.0发行说明

  • 由于trouble linking Musl binaries,暂时将Rust编译器版本更改为1.12(测试版)
  • env_logger软件包替换了slog日志记录工具,导致RUST_LOG环境变量不再有任何影响。
  • 已将WebDriver Rust库更新为0.15版

按照 2017-01-31 GeckoDriver v0.14.0发行说明进行:

    当错误源自Rust堆栈内部时,现在包括
  • Stacktraces。

现在在Windows XP doesn't have ConditionVariables, which notify requires via mpsc channels @ retep998中提到:

  

Windows XP支持非常糟糕。尽管libstd不会链接到Windows XP上不可用的任何功能,但是某些标准功能确实会在运行时加载这些功能,如果不存在,则会发生恐慌。 rsnotify很有可能取决于某些功能,这些功能需要Windows XP上不提供的API。

但是似乎按照Panic broken on Windows XP @alexcrichton所述:

  

当线程出现紧急情况时,它将尝试运行其紧急情况钩子,但是该紧急情况钩子受到RwLock的保护,而RwLock则在XP上未实现。这意味着,当您惊慌失措时,尝试获取rwlock时会立即惊慌。

最后,MUSL target doesn't link on nightlyrustc 1.12.0-nightly (a005b6785 2016-08-02)中似乎得到解决

结论

在当前的 Selenium v​​3.14.0 GeckoDriver v0.21.0 Firefox v61.0.2 的最新版本中,执行@Tests non WinXP 操作系统(例如 Win7 Win8 Win10 )上的非root用户用户em>)即可解决您的问题。