Python Selenium с ChromeDriver Headless: не удалось запустить запрос DevTools.

У меня это работает на моем Macbook Pro, поэтому при попытке перенести его на свой сервер для длительного использования я столкнулся с проблемой. Сервер — Ubuntu 16.04 (сервер) и Python 2.7.12.

Я установил последнюю версию селена с помощью pip и последнюю версию ChromeDriver. Я могу запустить его из командной строки (есть ошибка графического процессора, но, похоже, это не вызывает никаких проблем).

Однако, когда я пытаюсь запустить его из Python, используя этот код:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

path_to_chromedriver = '/usr/local/bin/chromedriver'
options = Options()
options.add_argument("start-maximized")
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument("--no-sandbox") 
service_args = ['--verbose']
service_log_path = '/tmp/local/chromedriver.log'
driver = webdriver.Chrome(executable_path=path_to_chromedriver, chrome_options=options, service_args=service_args, service_log_path=service_log_path)

Однако, когда я начинаю что-то делать, вот что я получаю в chromedriver.log (после всего начального сценария запуска для COMMAND InitSession:

[0.998][INFO]: Launching chrome: /opt/google/chrome/google-chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-ap\
ps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --ign\
ore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.tPkUXa/internal --log-level=0 --metrics-recording-only --no-first-run --password-store=basi\
c --remote-debugging-port=12752 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.ODIHcL\
 data:,
[0.998][DEBUG]: DevTools request: http://localhost:12752/json/version
[1.078][DEBUG]: DevTools request failed

И он продолжает выдавать это сообщение об ошибке в течение примерно 60 секунд, пока в конечном итоге не вернет это в Python:

WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.4.0-116-generic x86_64)

Я не могу на всю жизнь понять, как это исправить, и я много искал.

У меня сложилось впечатление, что мне не нужно использовать эмуляцию виртуального экрана, если я использую безголовый, но может ли это быть проблемой? (Я работаю в режиме инициализации без графического интерфейса в Ubuntu.)

Кроме того, мне не нравится, что в этой команде не передается --headless для запуска стабильной версии Chrome... это проблема?

Спасибо.

РЕДАКТИРОВАНИЕ:

Версия Chromedriver (я получил последнюю версию):

$ chromedriver
Starting ChromeDriver 2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5) on port 9515
Only local connections are allowed.

Селен

$ pip freeze | grep selenium
selenium==3.11.0

Хром

$ google-chrome --version
Google Chrome 65.0.3325.162

Вот трассировка журнала, которая показывает, что происходит: она зацикливается на сбое DevTools в течение 60 секунд, а затем умирает.

Full log/error trace:
[0.997][INFO]: COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [ "start-maximized", "--headless", "--disable-gpu", "--disable-extensions", "--no-sandbox" ],
            "extensions": [  ]
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [ "start-maximized", "--headless", "--disable-gpu", "--disable-extensions", "--no-sandbox" ],
         "extensions": [  ]
      },
      "platform": "ANY",
      "version": ""
   }
}
[0.997][INFO]: Populating Preferences file: {
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "check_default_browser": false
   },
   "distribution": {
      "import_bookmarks": false,
      "import_history": false,
      "import_search_engine": false,
      "make_chrome_default_for_user": false,
      "show_welcome_page": false,
      "skip_first_run_ui": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "profile": {
      "content_settings": {
         "pattern_pairs": {
            "https://*,*": {
               "media-stream": {
                  "audio": "Default",
                  "video": "Default"
               }
            }
         }
      },
      "default_content_setting_values": {
         "geolocation": 1
      },
      "default_content_settings": {
         "geolocation": 1,
         "mouselock": 1,
         "notifications": 1,
         "popups": 1,
         "ppapi-broker": 1
      },
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "translate": {
      "enabled": false
   }
}
[0.997][INFO]: Populating Local State file: {
   "background_mode": {
      "enabled": false
   },
   "ssl": {
      "rev_checking": {
         "enabled": false
      }
   }
}
[0.998][INFO]: Launching chrome: /opt/google/chrome/google-chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --ignore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.tPkUXa/internal --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12752 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.ODIHcL data:,
[0.998][DEBUG]: DevTools request: http://localhost:12752/json/version
[1.078][DEBUG]: DevTools request failed
...
[61.018][DEBUG]: DevTools request: http://localhost:12752/json/version
[61.018][DEBUG]: DevTools request failed
[61.021][INFO]: RESPONSE InitSession unknown error: Chrome failed to start: exited abnormally
[61.021][DEBUG]: Log type 'driver' lost 0 entries on destruction
[61.021][DEBUG]: Log type 'browser' lost 0 entries on destruction

person HodorTheCoder    schedule 20.03.2018    source источник
comment
Похоже, вы используете старую версию chromedriver. Попробуйте обновить chromedriver (и селен, пока вы это делаете).   -  person sytech    schedule 20.03.2018
comment
Кроме того, начните start-maximized с --.   -  person Ratmir Asanov    schedule 20.03.2018
comment
Можете ли вы обновить вопрос, указав полную трассировку стека ошибок вместе с информацией о версии используемых вами двоичных файлов?   -  person DebanjanB    schedule 20.03.2018
comment
Хорошо -- добавлены трассировка, библиотечные/бинарные версии.   -  person HodorTheCoder    schedule 20.03.2018
comment
Я полный идиот. Вы были правы @sytech, я обновился до последней версии, и это исправило. Примечание для всех, кто может найти это - УБЕДИТЕСЬ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ ПОСЛЕДНЮЮ ВЕРСИЮ И НЕ КОПИРУЕТЕ ИЗ СТАРОГО УЧЕБНИКА!   -  person HodorTheCoder    schedule 20.03.2018
comment
У меня такая же проблема, даже с последним chromedriver (2.37, на момент написания этой статьи) и Chrome 65, а также в Ubuntu 16.04 ...   -  person Aaron Wallentine    schedule 24.03.2018


Ответы (2)


Ваш chromedriver устарел для вашей версии Chrome. Вы используете chromedriver=2.29.461571, но последняя версия chromedriver, совместимая с Chrome65, — 2.37.

Вы можете найти последнюю версию chromedriver для вашей платформы здесь: https://sites.google.com/a/chromium.org/chromedriver/downloads

person sytech    schedule 20.03.2018

Ответ был таков: используйте последнюю версию chromedriver!

https://sites.google.com/a/chromium.org/chromedriver/downloads

Я скопировал / вставил из того, что я считал актуальным сценарием, и это была слишком старая версия.

person HodorTheCoder    schedule 20.03.2018