Как настроить ChromeDriver для запуска браузера Chrome в безголовом режиме через Selenium?

Я работаю над скриптом python для веб-очистки и пошел по пути использования Chromedriver в качестве одного из пакетов. Я хочу работать в фоновом режиме без каких-либо всплывающих окон. Я использую опцию "безголовый" на chromedriver, и, похоже, это делает работу с точки зрения не отображения окна браузера, однако, я все еще вижу .exe выполняется файл. Смотрите скриншот того, о чем я говорю. скриншот

Это код, который я использую для инициирования ChromeDriver:

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:Python27Scriptschromedriver.exe"

вещи, которые я пытался сделать, это изменить размер окна в параметрах на 0x0, но я не уверен, что сделал что-либо как .exe-файл все еще выскочил.

любые идеи, как я могу это сделать?

Я использую Python 2.7 FYI

4 ответов


Это должно выглядеть так:

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

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')  # Last I checked this was necessary.
driver = webdriver.Chrome(CHROMEDRIVER_PATH, chrome_options=options)

это работает для меня с помощью Python 3.6, я уверен,что он будет работать и для 2.7.


, работая с Клиент Селена 3.11.x, ChromeDriver V2-это.38 и Google Chrome v65.0.3325.181 на безголовый режим вы должны учитывать следующие моменты :

  • вам нужно добавить аргумент --безголовый для вызова Chrome в безголовом режиме.
  • для систем Windows необходимо добавить аргумент --disable-gpu

согласно Headless: make --disable-флаг gpu ненужный --disable-gpu флаг не требуется на Системы Linux и в macOS.

по состоянию на SwiftShader не выполняет утверждение в Windows в безголовом режиме --disable-gpu флаг станет ненужным на Системы Windows тоже.

  • аргумент start-maximized требуется для максимального видовое окно.

    здесь ссылка на подробную информацию о видовое окно.

  • вам нужно добавить аргумент --no-sandbox для обхода модели безопасности ОС.

    вот ссылка на песочница


  1. The .exe будет работать в любом случае. Согласно Google - " работать в безголовом режиме, т. е. без пользовательского интерфейса или отображения зависимостей сервера."

  2. лучше добавить 2 тире к аргументам командной строки, т. е. options.add_argument('--headless')

  3. в безголовом режиме также предлагается отключить GPU, т. е. options.add_argument('--disable-gpu')


Итак, после исправления мой код:

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('--disable-gpu')
options.add_argument('--headless')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"

The .exe-файл по-прежнему появляется при запуске скрипта. Хотя это избавило меня от некоторых дополнительных выходных данных, говорящих мне "не удалось запустить процесс GPU".

что в конечном итоге работает, это запуск моего скрипта Python с помощью a .bat файл

Итак,

  1. сохранить скрипт python, если папка
  2. откройте текстовый редактор и сбросьте следующий код (отредактируйте свой скрипт конечно)

    c:\python27\python.exe c:\SampleFolder\ThisIsMyScript.py %*

  3. сохранить .текстовый файл и меняем расширение на .летучая мышь!--2-->

  4. двойной клик для запуска файла

таким образом, это просто открыло скрипт в командной строке, и ChromeDriver, похоже, работает в этом окне, не выскакивая на переднюю часть экрана и, таким образом, решая проблему.