Selenium Webdriver на RPI отказывается от соединения с Crontab, работает с терминала - PullRequest
1 голос
/ 12 марта 2019

У меня на малине прекрасно работает python-скрипт для открытия веб-сайта, перехода к определенной части, копирования текста, сохранения его и сравнения с чем-то другим. Он отлично работает, когда я запускаю его из терминала.

Но когда я использую его как cronjob, он завершается с сообщением «Похоже, что браузер завершил работу, прежде чем мы смогли подключиться. Если вы указали файл_файла в конструкторе FirefoxBinary, проверьте его для получения подробной информации». Таким образом, часть, которая не работает:

from selenium import webdriver

try:
    driver = webdriver.Firefox()
except Exception as e:
    print(e)

Как видите, я не указал путь к журналу, потому что, честно говоря, не знаю как. Так что, если вы можете сказать мне это, я с радостью постараюсь реализовать это и получить журнал.

Есть ли что-то особенное, что вы должны сделать, чтобы начать как cronjob? Я называю это с

*/1 * * * * root cd /home/pi/Desktop && sudo python WebAlert.py >> /var/log/myjob.log 2>&1

С терминала работает с питоном WebAlert.py

Большое спасибо, ребята, у меня нет идей.

EDIT Я изменил некоторые строки. Я добавил это: binary = FirefoxBinary('/usr/bin/iceweasel')

и я сменил драйвер следующим образом:

driver = webdriver.Firefox(executable_path=r'/usr/local/bin/geckodriver', firefox_binary=binary)

Вызов в crontab с этим

cd /home/pi/Desktop && sudo ../../../usr/bin/python3 WebAlert.py >> /var/log/mylog.log

выдает следующую ошибку:

Traceback (последний вызов был последним): Файл "/home/pi/Desktop/WebAlert.py", строка 37, в driver = webdriver.Firefox (executetable_path = r '/ usr / local / bin / geckodriver', firefox_binary = двоичный) Файл "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", строка 174, в init keep_alive = True) Файл "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", строка 157, в init self.start_session (возможности, browser_profile) Файл "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", строка 252, в start_session response = self.execute (Command.NEW_SESSION, параметры) Файл "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", строка 321, в исполнении self.error_handler.check_response (ответ) Файл "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", строка 242, в check_response повысить исключение_класса (сообщение, экран, отслеживание стека) selenium.common.exceptions.WebDriverException: Сообщение: соединение отклонено

1 Ответ

1 голос
/ 13 марта 2019

Добавление следующего кода перед запуском драйвера решило мою проблему:

from pyvirtualdisplay import Display 
display = Display(visible=0, size=(1024, 768))
display.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...