"Cannot get automation extension" 使用 Selenium 的无头 chrome 错误 (Ubuntu)

"Cannot get automation extension" error on headless chrome with Selenium (Ubuntu)

我在我的 Ubuntu 服务器 (16.04) 上安装了最新的 Google Chrome 57.0.2987.110。 我正在使用 canopy(它是 Selenium 的 F# 包装器)。 我将最新的 chrome 驱动程序放在与我的二进制文件相同的文件夹中,版本:2.28.455506(并且我设置了正确的驱动程序路径)。

我以 --headless 参数开始 chrome,像这样:

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

  start <| ChromeWithOptions chromeOpts

一启动我就收到这个错误:

[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidOperationException: unknown error: cannot get automation extension from unknown error: page could not be found: chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html (Session info: content shell=) (Driver info: chromedriver=2.28.455506 (18f6627e265f442aeec9b6661a49fe819aeeea1f),platform=Linux 4.4.0-64-generic x86_64) at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (OpenQA.Selenium.Remote.Response errorResponse) [0x000d5] in <2096f357ed27440a8e98c8a8dd645cdd>:0 at OpenQA.Selenium.Remote.RemoteWebDriver.Execute (System.String driverCommandToExecute, System.Collections.Generic.Dictionary`2[TKey,TValue] parameters) [0x00046] in <2096f357ed27440a8e98c8a8dd645cdd>:0 at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute (System.String driverCommandToExecute, System.Collections.Generic.Dictionary 2[TKey,TValue] parameters) [0x00000] in <2096f357ed27440a8e98c8a8dd645cdd>:0 at OpenQA.Selenium.Remote.RemoteWindow.set_Size (System.Drawing.Size value) [0x00067] in <2096f357ed27440a8e98c8a8dd645cdd>:0 at canopy.core.pin (canopy.types+direction direction) [0x0002f] in <58c4b5b9d8107025a7450383b9b5c458>:0 at canopy.core.start (canopy.types+BrowserStartMode b) [0x0050c] in <58c4b5b9d8107025a7450383b9b5c458>:0

似乎无法设置window大小。 这是启动无头 Chrome 的正确方法吗?我在某处读到最新版本具有无头功能。 由于我使用的是 Google Chrome 和 chrome 驱动程序的最新版本,我认为这不应该是版本不匹配。

它在 ma local Windows 10 机器上工作正常 chromedrive (just for windows).

运行 命令(并且没有无头参数):

DISPLAY=:1 xvfb-run mono myapp.exe

似乎有效。我认为这解决了我的问题。 我把它留在这里供其他人寻找 tu 运行 headless chrome 并且遇到同样问题的方法。

本解法来自:http://coderscoffeehouse.com/tech/2017/01/17/headless-front-end-testing-on-linux-using-fsharp.html

有一个关于此主题的开放 Chromium issue。它指出:

Headless mode doesn't currently support extensions, and it's not clear whether we can support them easily -- although we are doing some initial feasibility analysis.

正如@mateuszlewko 所建议的,X ​​虚拟帧缓冲区 (XVFB) 可用作 Linux 解决方法。