2016-11-27 4 views
1

Linux Crontab kann nicht mit einer grafischen Benutzeroberfläche Verfahren ausgeführt werden? Ich habe eine einfache seleimun + chrome automatische Login-Verfahren in der Testlaufzeit ist in Ordnung zu laufen, aber in der Crontab Timing, schreibe ich, und schrieb eine einfache Kontrollgruppe, er lief nicht, was kann ich tun?Linux Crontab kann nicht mit einer grafischen Benutzeroberfläche Verfahren ausgeführt werden?

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 

fand ich diese Antwort, aber wie ich ihn run selenium with crontab (python)

Danke für die Antwort üben!

+0

Es gibt keine X-Sitzung in cron zur Verfügung. Useva virtueller Framebuffer oder PhantomJS anstelle von Chrome. –

+0

Vielen Dank für Ihre Antwort, ich werde versuchen, Phantomjs simulieren den Login, ich würde gerne wissen, ob es möglich ist, selemiun visuelle Schnittstelle zu schließen, – luyishisi

Antwort

0

würde ich Gebrauch Webmin Es ist eine große Linux-Toolkit (Web-Interface)

prüfen Link empfehlen: Scheduled crontab with Webmin

+0

Vielen Dank für Ihre Antwort, ich werde es versuchen. – luyishisi

+0

vielleicht ist webmin ein nettes Werkzeug, aber es löst das Problem nicht automatisch. – furas

+0

automatisch? warum brauchen sie automatisch? du musst konfigurieren .... richtig? –

1

Wenn Sie möchten, starten etwas mit einem GUI müssen Sie anweisen, cron, wo senden die Ausgabe:

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

Ich müsste einen Testfall bauen, um zu sehen, ob dies mit Selenium funktioniert. Ich bin unklar, ob dieser Export auf Prozesse angewendet wird, die von Ihrem Python-Skript statt von Cron selbst erzeugt werden. Aber im Prinzip können Sie damit einen Prozess mit einer GUI starten.

Es gibt einige Tricks zu diesem, Sie müssen ein Benutzer sein und nicht root im Allgemeinen, also stellen Sie sicher, dass Sie es in Ihrem Benutzer crontab anstelle der root oder sudo crontab.

Here are some example usages

+0

Vielen Dank für Ihre Antwort, ich habe einen Erfolg versucht! Vielen Dank! – luyishisi

+0

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

+0

@luyishisi Schön, dass es funktioniert hat! Das wird auch für mich in Zukunft nützlich sein. Wenn dies die beste Antwort ist, sollten Sie sie als Antwort akzeptieren. Viel Glück auf deinem Programm – Lost

Verwandte Themen