Linux crontab无法运行图形界面程序?

时间:2016-11-27 03:36:43

标签: python linux google-chrome selenium crontab

Linux的crontab无法运行图形界面程序?我在测试运行时完成了一个简单的seleimun + chrome自动登录程序,可以运行,但是在crontab计时,我写了,并写了一个简单的控制组,他没有运行,我该怎么办?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time,sys

driver = webdriver.Chrome()

driver.get("https://stackoverflow.com/users/login?ssrc=head&returnurl=http%3a%2f%2fstackoverflow.com%2fusers%2f7197440%2fa83533774%3ftab%3dtopactivity")

elem = driver.find_element_by_xpath('//*[@id="email"]')
elem.send_keys("******")

elem = driver.find_element_by_xpath('//*[@id="password"]')
elem.send_keys("***")

elem.send_keys(Keys.RETURN)
time.sleep(5)
name = time.ctime().replace(' ','-')+'.png'
driver.save_screenshot(name)
time.sleep(5)
print 'end',time.ctime()
driver.close()

crontab:

DISPLAY=:0 google-chrome

 */3 * * * * python ~/selenium_so.py >> log1.txt

 */1 * * * * date >> log.txt

我找到了这个答案,但我该如何练习他 run selenium with crontab (python)

感谢您的回答!

3 个答案:

答案 0 :(得分:2)

如果你想用GUI启动某些东西,你必须指示cron在哪里发送输出:

* * * * * export DISPLAY=:0 && (your instruction)

我需要构建一个测试用例,看看这是否适用于Selenium。我不清楚这个导出是否适用于由python脚本而不是cron本身生成的进程。但原则上,这将允许您使用GUI启动进程。

有一些技巧,你需要成为一个用户而不是root用户,所以一定要把它放在你的用户crontab而不是root或sudo crontab中。

Here are some example usages

答案 1 :(得分:0)

我建议使用Webmin这是一个很棒的Linux工具包(Web界面)

检查此链接: Scheduled crontab with Webmin

答案 2 :(得分:0)

您的应用程序可能会使用一些环境变量 您可以从 /home/user1/.bashrc 文件中存储环境变量

typeset -gx > /tmp/user1envvars

和 /etc/crontab 条目看起来像

* * * * *   user1 /bin/bash -c 'source /tmp/user1envvars ; /path/to/your/app  args..'