Selenium ChromeDriver не распознает недавно скомпилированный безголовый хром (Python)
Я пытаюсь использовать новую (2016) безголовую версию Chromium с Selenium/ChromeDriver (в прошлом я использовал Firefox с xfvb, но этот promises был намного лучше).
Я собрал безголовую версию Chromium из источников (я не нашел никаких предварительно созданных двоичных файлов) на основе инструкций, которые я нашел здесь и затем я использовал следующий код, чтобы запустить его через Selenium:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
l_option = Options()
l_option.add_argument('headless')
l_option.add_argument('disable-notifications')
l_option.binary_location = '/home/fi11222/Headless_Chromium/headless_shell'
l_driver = webdriver.Chrome(chrome_options=l_option)
Тот же код работает со стандартным хром (если я удалю опцию binary.location
)
Как, однако, я получаю следующую ошибку:
selenium.common.exceptions.WebDriverException: Message: unknown error: unrecognized Chrome version: HeadlessChrome/59.0.3032.0
(Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.4.0-53-generic x86_64)
По-видимому, безголовый хром-бит компилируется с идентификатором версии, который ChromeDriver не распознает. Помощь!
Среда:
- Компиляция: сервер Ubuntu 16.04
- Выполнение селена: Linux Mint 18.1
Ответы
Ответ 1
ChromeHeadless распознается chromedriver с этот патч (созданный после того, как вы опубликовали сообщение), который доступен только с хромирования 2.29 (выпущен в Апрель 2017 года). Убедитесь, что у вас есть этот исполняемый файл хромирования, доступный в PATH, и что Selenium выбирает его вместо любого другого хромированного ребра, который у вас может быть доступен.
Кроме того, обратите внимание, что - согласно безгласной документации Chrome - вам нужно передать еще два флага:
l_option.add_argument('remote-debugging-port=9222')
l_option.add_argument('disable-gpu')
Как для предварительно созданных двоичных файлов безглавых Chrome - этот параметр доступен с Chrome 57, поэтому он поддерживается всеми версиями, распространяемыми в настоящее время через официальный репозиторий Google (т.е. стабильный Chrome 58 и неустойчивый Chrome 59). Это подчеркивание Chrome 59, поэтому ожидайте некоторые грубые грани до тех пор, пока функция не стабилизируется.