我有一个python脚本,通过selenium与下一行调用铬。
ff = webdriver.Chrome('/home/user01/webScraping/CollectAndGo/chromedriver')
python脚本是从shell脚本中调用的。
python /home/user01/webScraping/CollectAndGo/cgcom.py > /home/user01/webScraping/CollectAndGo/cgcom.log 2>&1
当我从terminal运行脚本或者只是执行.sh文件时,它完美的工作,但是当我安排一个crontab作业时,它会失败,并出现下一个错误。
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: u'unknown error: Chrome failed to start: exited abnormally\n (Driver info: chromedriver=2.9.248304,platform=Linux 3.5.0-36-generic x86_64)'
该错误与此问题的第一行代码有关。 有人知道为什么会发生这种情况吗?
尝试从cron
启动浏览器最明显的问题是,即使您的计算机上运行了X, DISPLAY
环境变量也不会被设置为从您的crontab
运行的进程,因此从此处启动浏览器将会失败。
解决方案的范围从琐碎到超级复杂。 一个简单的解决办法是接受如果没有X运行,并且手动设置DISPLAY
为:0
,你的脚本将不运行,这是Ubuntu启动的默认X服务器的默认显示编号。
例如,如果我在crontab
行中使用这个命令,Chrome开始没有问题:
DISPLAY=:0 google-chrome
Crontab很可能以没有权限访问chromedriver目录/文件的用户身份运行。
看看这里的答案如何作为一个特定的用户运行crontab。
硒web驱动程序需要运行脚本的X会话。 Cron脚本通常运行X会话。 在您的cron脚本中添加X会话。 如下所示:* 11 * * * export DISPLAY =:0; 你的script.py