2017-09-26 26 views
1

Ich versuche, ein Programm zu starten, das einige Tabs für mich in Python (3.6) mit Selenium und PyAutoGUI über Crontab automatisiert.PyAutoGUI in Cron Job

Hier ist das Skript Ich versuche, wenn cron das Programm ausgeführt wird, nicht zu laufen:

import pyautogui 
import selenium 
from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get("https://www.google.com") 

jedoch cron läuft das Programm, wenn ich die erste Zeile aus kommentieren:

#import pyautogui 
import selenium 
from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get("https://www.google.com") 

hier ist meine CronJob:

* * * * * export DISPLAY=:1 ; cd /root/testingDir ; sudo /usr/local/bin/python3 /root/testingDir/test.py 

PyAutoGUI installiert ist/usr/local/lib/python3.6/site-packagesund ich habe versucht, den sys.path.append() Trick, aber das hat auch nicht funktioniert.

Ich bin verwirrt, weil es wie cron scheint wird speziell nicht pyautogui importieren (ich habe nicht dieses Problem mit anderen Importen erfährt. Irgendwelche Gedanken?

+1

Versuchen Sie, Ihren Fehler in eine Datei wie folgt zu senden: '' '* * * * * sh script.sh >> results.log 2> & 1''' – joaquindev

Antwort

0

ich auch mit diesem Problem konfrontiert. Hier ist, wie ich . um ihn herum (mit Hilfe der akzeptierte Antwort here) der Schlüssel ist, dass es ein paar fehlende cron Umgebungsvariablen sind, die in den Terminalumgebungsvariablen vorhanden sind Vergleichen sie die Umgebungsvariablen in jedem Kontext von:.

  1. eingeben env im Terminal

  2. Erstellen eines cron-Job enthält * * * * * env > /tmp/env.output und Prüfung des Ausgangs

ich dieses Problem gelöst, indem Sie Folgendes an der Spitze meiner Cron-Job einschließlich, die das Skript enthalten sind, die pyautogui genannt:

DISPLAY=:0 
XAUTHORITY=/run/user/1000/gdm/Xauthority 
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/rm/Downloads/bin:/home/rm/.local/bin:/home/rm/bin:/home/rm/Downloads/bin 
15 * * * * /usr/bin/python3 /home/user/<pyscript.py> 

So sieht aus wie die minimale Teilmenge der Umgebungsvariablen, die vorhanden sein müssen: DISPLAY, XAUTHORITY und PATH. (Ich habe die Variablenwerte, indem Sie env im Terminal tun)