只有在通过Windows任务调度程序运行时,Selenium firefox才能加载

时间:2017-11-13 11:15:35

标签: python windows selenium firefox

我使用Selenium和(tor)Firefox在Python中有一个Web抓取脚本。当我在IDE或cmd中手动启动脚本时,此操作完全正常。但是,当我不在办公室时,需要运行此脚本,因此我通过Windows任务调度程序启动的批处理脚本(以及其他一些抓取脚本)运行它。同样,当我手动运行此批处理文件时,脚本运行完美。另一方面,当计划任务运行时,只要设置了webdriver并且出现以下无用的错误消息,它就会失败:

Traceback (most recent call last):
  ...
  #private library traceback
  ...
  File "redacted.py", line 322, in redacted_func
    driver = webdriver.Firefox()
  File "C:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
    keep_alive=True)
  File "C:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 98, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "C:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 188, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "C:\Program Files\Python 3.5\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status: 0

是否有人知道为什么只有在从任务计划程序运行时才会出现此错误

1 个答案:

答案 0 :(得分:3)

经过进一步调查后,我发现在后台处理任务时会发生错误。当任务设置为“运行用户是否登录时”会发生这种情况。将此设置更改为“仅在用户登录时运行”允许任务在前台运行而不会出现问题。

出于某种原因,在后台运行会导致firefox崩溃,但是chromedriver(在我运行的其他一些抓取脚本中使用)不受此影响。这似乎有些奇怪,但这种解决方法足以让它在Windows上运行。