Ошибка "Не удается получить расширение автоматизации" в Chrome без головы с Selenium (Ubuntu)

Я установил последнюю версию Google Chrome 57.0.2987.110 на свой сервер Ubuntu (16.04). Я использую купол (который является оберткой F# для Selenium). Я поместил последний chromedriver в ту же папку, что и мой бинарный файл, версия: 2.28.455506 (и я установил правильный путь к драйверу).

Я начинаю хром с --headless аргумент, как это:

  let chromeOpts = ChromeOptions ()
  chromeOpts.AddArgument "--headless"
  chromeOpts.AddArgument "--disable-gpu"
  chromeOpts.AddArgument "start-maximized"

  start <| ChromeWithOptions chromeOpts

Как только он запускается, я получаю эту ошибку:

[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: неизвестная ошибка: не удается получить расширение автоматизации из-за неизвестной ошибки: не удалось найти страницу: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html (информация сеанса: содержимое оболочки содержимого =) ((: chromedriver=2.28.455506 (18f6627e265f442aeec9b6661a49fe819aeeea1f), платформа =Linux 4.4.0-64-родовой x86_64) в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (OpenQA.Selenium.Remote.Response errorResponse) [0x000d5] в <2096f357ed27440a8e98c8a8dd645cdd>:0 в OpenQA.Selenium.Remote.RemoteWebDriver.Execute (System.String driverCommandToExecute, System.Collections.Generic.Dictionary`2[TKey,TValue] параметры) [0x00046] в <2096f357ed27440a8e98c8aDedeeEedeccDaDeeeee..InternalExecute (System.String driverCommandToExecute, System.Collections.Generic.Dictionary 2[TKey,TValue] параметры) [0x00000] в <2096f357ed27440a8e98c8a8dd645cdd>:0 в OpenQA.Selenium.Remote.RemoteWindow.set_Size (значение System.Drawing.Size) [0x00067] в <2096f357ed27440a8e98c8a8dd645cdd>:0 в canopy.core.pin (canopy.types+ направление направление) [0x0002f] в <58c4b5b9d8107025a7450383b9b5c458>:0 в canopy.core.start (canopy.types+BrowserStartMode b) [0x0050c] в <58c4b5b9d8107025a7450383b9b5c458>:0

Кажется, что он не может установить размер окна. Это правильный способ запустить Chrome без головы? Я где-то читал, что в новейшей версии есть функция без головы. Поскольку я использую новейшую версию Google Chrome и chromedriver, я думаю, что это не должно быть несовпадением версий.

Также он отлично работает на локальной машине с Windows 10 с той же версией chromedrive (только для Windows).

2 ответа

Решение

Запуск с командой (и без аргумента без заголовка):

DISPLAY=:1 xvfb-run mono myapp.exe

Кажется, работает. Я думаю, что это решает мою проблему. Я оставляю это здесь для других, ищущих способ запустить хром без головы и имеющих ту же самую проблему.

Это решение исходит от: http://coderscoffeehouse.com/tech/2017/01/17/headless-front-end-testing-on-linux-using-fsharp.html

На эту тему открыт вопрос Chromium. Говорится:

В настоящее время безголовый режим не поддерживает расширения, и неясно, можем ли мы их легко поддерживать - хотя мы проводим некоторый первоначальный анализ выполнимости.

Как предлагает @mateuszlewko, X Virtual Framebuffer (XVFB) можно использовать в качестве обходного пути для Linux.