我使用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
是否有人知道为什么只有在从任务计划程序运行时才会出现此错误?
答案 0 :(得分:3)
经过进一步调查后,我发现在后台处理任务时会发生错误。当任务设置为“运行用户是否登录时”会发生这种情况。将此设置更改为“仅在用户登录时运行”允许任务在前台运行而不会出现问题。
出于某种原因,在后台运行会导致firefox崩溃,但是chromedriver(在我运行的其他一些抓取脚本中使用)不受此影响。这似乎有些奇怪,但这种解决方法足以让它在Windows上运行。