我已在我的Ubuntu服务器(16.04)上安装了最新的Google Chrome 57.0.2987.110。 我使用了冠层(它是Selenium的F#包装器)。 我把最新的chromedriver放在与我的二进制文件相同的文件夹中,版本:2.28.455506(我设置了正确的驱动程序路径)。
我使用--headless
参数启动chrome,如下所示:
let chromeOpts = ChromeOptions ()
chromeOpts.AddArgument "--headless"
chromeOpts.AddArgument "--disable-gpu"
chromeOpts.AddArgument "start-maximized"
start <| ChromeWithOptions chromeOpts
一旦启动,我就会收到此错误:
[错误]致命的未处理异常:System.InvalidOperationException:未知错误:无法获得自动化扩展 来自未知错误:找不到页面:chrome-extension://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html (会话信息:内容shell =) (驱动程序信息:chromedriver = 2.28.455506(18f6627e265f442aeec9b6661a49fe819aeeea1f),platform = Linux 4.4.0-64-generic x86_64) 在OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(OpenQA.Selenium.Remote.Response errorResponse)[0x000d5] in&lt; 2096f357ed27440a8e98c8a8dd645cdd&gt;:0 在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(System.String driverCommandToExecute,System.Collections.Generic.Dictionary`2 [TKey,TValue]参数)[0x00046] in&lt; 2096f357ed27440a8e98c8a8dd645cdd&gt;:0 在OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(System.String driverCommandToExecute,System.Collections.Generic.Dictionary 2 [TKey,TValue]参数)[0x00000] in&lt; 2096f357ed27440a8e98c8a8dd645cdd&gt;:0 在OpenQA.Selenium.Remote.RemoteWindow.set_Size(System.Drawing.Size value)[0x00067] in&lt; 2096f357ed27440a8e98c8a8dd645cdd&gt;:0 在canopy.core.pin(canopy.types +方向)[0x0002f] in&lt; 58c4b5b9d8107025a7450383b9b5c458&gt ;:0 at canopy.core.start(canopy.types + BrowserStartMode b)[0x0050c] in&lt; 58c4b5b9d8107025a7450383b9b5c458&gt;:0
似乎无法设置窗口大小。 是推出无头Chrome的正确方法吗?我读到某个地方,最新版本有无头功能。 由于我使用的是Google Chrome和chromedriver的最新版本,我认为它不应该是版本不匹配。
此外它在使用相同版本的chromedrive的ma本地Windows 10计算机上运行正常(仅适用于Windows)。
答案 0 :(得分:1)
使用命令运行(并且没有无头参数):
DISPLAY=:1 xvfb-run mono myapp.exe
似乎工作。我认为这解决了我的问题。 我把它放在这里寻找其他人寻找一种无头镀铬方式并遇到同样问题。
此解决方案来自:http://coderscoffeehouse.com/tech/2017/01/17/headless-front-end-testing-on-linux-using-fsharp.html
答案 1 :(得分:1)
这个主题有一个开放的Chromium issue。它声明:
无头模式目前不支持扩展,目前尚不清楚 我们是否能够轻松地支持他们 - 尽管我们正在做一些事情 初步可行性分析。
根据@mateuszlewko的建议,X Virtual Framebuffer(XVFB)可以用作Linux解决方法。