用crontab运行selenium(python)

我有一个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