Запустить Selenium в crontab необходимо специальным образом, указывая дисплей, на котором он будет работать. Расскажем в этой заметке как.
Я настраивал Python скрипт с Selenium для автоматизации некоторых задач. Одну из задач я хотел полностью автоматизировать, чтобы она выполнялась в определенное время. Я столкнулся с несколькими проблемами, пытаясь запустить скрипт Python в crontab. Скрипт будет нормально работать в терминале, но не с помощью crontab. После долгих поисков в Google и StackOverflow я нашел решение этой проблемы.
Есть две проблемы:
1. Crontab использует очень ограниченные переменные PATH.
2. Crontab не использует дисплей или терминал для запуска кода. Все работает в фоновом режиме.
Изначально я получал такую ошибку: “Message: ‘geckodriver’ executable needs to be in PATH.”
Решение для этого – добавить PATH к драйверу браузера в cronjob.
Вторая проблема, с которой я столкнулся, заключалась в том, что у cronjob не было дисплея для использования.
Исправить это можно, добавив отображение в команду cronjob.
Открываем для редактирования файл crontab:
# crontab -e
или
# vim /etc/crontab
и добавляем свою задачу по аналогии:
* * * * * export DISPLAY=:0 && export PATH=$PATH:/usr/local/bin && /usr/bin/python3 /scripts/script1.py
Моя задача должна выполняться каждую минуту. Единственный нюанс, пользователь от которого выполняется задание должен быть “залогинен” в графическом окружении Вашей ОС Linux.