我正在尝试在 cron 作业中使用 Google Chrome 运行 Selenium 脚本,而无需使用无头模式。当我在我的用户帐户下手动执行脚本时,一切正常。但是,当我通过 cron (从用户或 root)运行相同的脚本时,我收到以下错误:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: exited normally. (session not created: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
我尝试过的事情:
以用户身份手动运行脚本:完美运行。 为 root 和我的用户帐户配置 crontab,两种情况下都会出现相同的错误。 我确保脚本使用 options 对象而不是 chrome_options (因为它已被弃用)。
我需要 Chrome 以 GUI 模式运行(不是无头模式),但我无法让 cron 作业在不崩溃的情况下执行此操作。仅当通过 cron 触发脚本时才会出现该错误。
45 9 * * * /usr/bin/python3 /home/user/project/script.py >> /home/user/cron_log.txt 2>&1
任何有关如何解决此问题的建议将不胜感激。
我相信这个问题的出现是因为 cron 作业在非 GUI 环境中运行,这会阻止 Chrome 在非无头模式下正常启动。
要解决此问题,您可以使用
Xvfb
提供虚拟显示:
安装
Xvfb
:(基于 Debian)
sudo apt-get install xvfb
更新您的 Cron 作业以使用
Xvfb
:
45 9 * * * /usr/bin/xvfb-run /usr/bin/python3 /home/user/project/script.py >> /home/user/cron_log.txt 2>&1
此设置允许 Chrome 通过提供虚拟显示环境以非无头模式运行。