Скрипт Python застрял в crontab — Python — Selenium — Xvfb — Firefox — Ubuntu

У меня есть следующая среда

Ubuntu 14.04 LTS под ESXi Python, веб-драйвер Selenium, Xvfb

Мой скрипт работает нормально, если я запускаю его вручную, но зависает, когда я помещаю скрипт в crontab. Я правильно использовал отображение экспорта, и процесс firefox запускается, однако браузер просто становится серым и зависает только тогда, когда crontab запускает процесс. Если я запускаю его вручную, все в порядке. Это даже работает через telnet, если я использовал код ниже:

display = Display(visible=0, size=(1024,768))
display.start()
<CODE>
display.stop()

person ucipass    schedule 01.05.2014    source источник
comment
Когда вы запускаете через crontab, сценарий запуска вашей оболочки не запускается, поэтому у него нет доступа к переменной среды DISPLAY, которую вы получаете при обычном входе в систему.   -  person Barmar    schedule 01.05.2014
comment
Но скрипты запускаются, и если я не даю скрипту переменную DISPLAY, браузер появляется на рабочем столе, после этого при продолжении скрипта после первого автоматического нажатия просто становится серым и ничего не делает. Я потратил бесчисленное количество часов на это и задавался вопросом, может ли кто-нибудь с опытом работы с Selenium/Webdriver дать мне подсказку.   -  person ucipass    schedule 01.05.2014
comment
Я действительно понял это, и проблема заключалась в том, что скрипт не запускался с правильной переменной оболочки.   -  person ucipass    schedule 07.11.2014


Ответы (2)


Это не лучшее решение, но оно помогает мне решить эту проблему. Вместо фаерфокса использую хром. Он не застревает, когда я помещаю scipt в crontab.

Вот учебник, как заставить работать chromedriver с Chrome/Chromium: Запуск chrome webdriver с Selenium

person Leachim    schedule 15.07.2014
comment
использовать Chrome вообще не отвечает на вопрос ОП - person Corey Goldberg; 27.05.2018

Я столкнулся с этой проблемой, и исправление, по крайней мере для меня, состояло в том, чтобы установить переменную HOME в crontab на путь к домашнему каталогу пользователя, от имени которого запускался cronjob. Ранее для него было установлено значение «/».

person nedned    schedule 22.09.2015