cron任务运行python脚本出现报错:selenium.common.exceptions.WebDriverException: Message: unknown error
- 最近,在linux系统上提交了一些定时任务,每天定时运行某个
.sh
脚本,但是在检查日志的时候发现,提交的任务并没有完成。 - 相关的
.sh
脚本主要包括:切换路径,激活python 环境、调用python程序,这三个部分 - python的程序主要是基于selenium,测试谷歌浏览器并实现相关自动登录网址的作用
查看输出日志,详细的报错如下所示:
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: 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.)
Stacktrace:
#0 0x562a85d201e3 <unknown>
#1 0x562a85adf146 <unknown>
#2 0x562a85b07e7a <unknown>
#3 0x562a85b03e7b <unknown>
#4 0x562a85b45c37 <unknown>
#5 0x562a85b4525f <unknown>
#6 0x562a85b3c7d3 <unknown>
#7 0x562a85b0f35a <unknown>
#8 0x562a85b1049e <unknown>
#9 0x562a85d7446e <unknown>
#10 0x562a85d78193 <unknown>
#11 0x562a85d5a5a0 <unknown>
#12 0x562a85d79253 <unknown>
#13 0x562a85d4bc35 <unknown>
#14 0x562a85d9be18 <unknown>
#15 0x562a85d9bfa7 <unknown>
#16 0x562a85db7113 <unknown>
#17 0x7f41b6494b43 <unknown>
报错的意思大概是:可能是因为 cron 定时任务没有找到 Chrome 浏览器的执行文件路径或者 crontab 的环境变量没有设置正确。
此外,我做了以下的错误排除:
1、详细检查了我的chrome的版本和chrome driver的版本,确信他们两是对应的
google-chrome --version
chromedriver --version
2、确保python运行的脚本和chrome driver处于相同路径下,并在代码中指定了chrome driver的路径
3、确保linux环境下拥有相关的依赖库
sudo apt-get update
sudo apt-get install -y libglib2.0-0 libnss3-dev libgconf-2-4 libfontconfig1
4、 最后,在命令行尝试单独运行python.py
的脚本和.sh
的脚本,都能够成功执行
以上,问题可能处在cron的定时任务中,可能是crontab找不到路径导致的
解决办法
- 尝试在cron任务中添加以下内容来设置DISPLAY环境变量:
DISPLAY=:0
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
或者这样:
export DISPLAY=:0
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/lib/chromium-browser/
其中 DISPLAY 设置为 :0,PATH 设置为包含 Chrome 浏览器的路径。
如下所示,之间写在你设置crontab任务的开头
以上,再次测试定时任务,发现问题解决啦~~