2016-11-27 10 views
1

Linux crontab не может работать с графическими интерфейсами? Я выполнил простые процедуры автоматического входа в систему seleimun + chrome в тестовое время выполнения, это нормально для запуска, но в момент crontab я пишу, а написал простую контрольную группу, он не запускался, что я могу сделать?Linux 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() 

кронтаб:

DISPLAY=:0 google-chrome 

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

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

Я нашел этот ответ, но как я практикую его run selenium with crontab (python)

Спасибо за ответ!

+0

В cron отсутствует сеанс X. Useva virtual framebuffer или PhantomJS вместо Chrome. –

+0

Спасибо за ваш ответ, я попробую phantomjs, чтобы имитировать логин, я хотел бы знать, можно ли закрыть визуальный интерфейс selemiun, – luyishisi

ответ

0

Я бы рекомендовал использовать Webmin Это отличный Linux инструментарий (Web-интерфейс)

Проверить эту ссылку: Scheduled crontab with Webmin

+0

Спасибо за ваш ответ, я попробую. – luyishisi

+0

Возможно, webmin - отличный инструмент, но он не решает проблему автоматически. – furas

+0

автоматически? зачем нужно автоматически? вам нужно настроить .... правильно? –

1

Если вы хотите запустить что-то с графическим интерфейсом, вы должны инструктировать хрон, где отправить выход:

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

Мне нужно будет построить тестовый пример, чтобы увидеть, будет ли это работать с селеном. Я не знаю, будет ли этот экспорт применяться к процессам, порожденным вашим скриптом python, а не самим cron. Но в принципе это позволит вам запустить процесс с графическим интерфейсом.

Есть несколько приемов для этого, вы должны быть пользователем, а не root вообще, поэтому убедитесь, что вы положили его в свой пользовательский crontab вместо root или sudo crontab.

Here are some example usages

+0

Спасибо за ваш ответ, я пробовал успех! Большое спасибо! – luyishisi

+0

*/1 * * * * export DISPLAY =: 0; python ~/selenium_so.py >> log1.txt – luyishisi

+0

@luyishisi Рад, что это сработало! Это будет полезно и мне в будущем. Если это окажется лучшим ответом, обязательно примите его в качестве ответа. Удачи вам в вашей программе – Lost