Python-скрипт с Selenium и Chromedriver в безголовом режиме в CentOS7 работает нормально при вызове вручную.
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('no-sandbox')
self.driver = webdriver.Chrome(chrome_options=options)
При запуске скрипта crontab, однако, он выдает это исключение в строке 4 (выше). Полный возврат внизу.
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (Driver info: chromedriver=2.38.552522
Cron настроен с помощью crontab -e
* * * * * cd /to/path && /to/path/.virtualenvs/selenium/bin/python /to/path/script.py -t arg1 arg2 > /to/path/log.txt 2>&1
Это вызвало ошибки, такие как chromedriver, не может быть найден. Затем я добавил следующее в crontab -e.
1) Используйте bash вместо sh, хотя запуск сценария python вручную из sh работает нормально
2) Укажите путь к chromedriver
SHELL=/bin/bash
PATH=/usr/local/bin/
Я пробовал разные предложения, найденные в Интернете, такие как добавление параметров --no-sandbox в chromedriver в моем скрипте. Все не помогло. Обратите внимание, что я использую chrome в режиме без головы, поэтому я думаю, что мне не нужен этот экспорт DISPLAY =: 0 в cron или в библиотеках Xvfb, как это было раньше.
Python 3.6.1
Селен 3.4.3
Chromedriver 2.38.552522
google-chrome-stable 65.0.3325.181
Полный возврат
Exception in thread <name>:
Traceback (most recent call last):
File "/usr/lib64/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib64/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/path/to/script.py", line 53, in start
self.site_scrape(test_run)
File "/path/to/script.py", line 65, in site
self.driver = webdriver.Chrome(chrome_options=options)
File "/home/<user>/.virtualenvs/selenium/lib64/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
desired_capabilities=desired_capabilities)
File "/home/<user>/.virtualenvs/selenium/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 98, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/home/<user>/.virtualenvs/selenium/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 188, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/<user>/.virtualenvs/selenium/lib64/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/home/<user>/.virtualenvs/selenium/lib64/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Linux 4.14.12-x86_64-linode92 x86_64)