我正在尝试使用chrome在本地运行量角器测试,但是在无头模式下,我看到了docs并在配置文件中添加了适当的选项:
capabilities: {
browserName: 'chrome',
shardTestFiles: true,
chromeOptions: {
args: [ '--headless', '--disable-gpu', '--window-size=800,600' ]
}
}
在运行时,我遇到以下错误:
[1009/122000.081:ERROR:gpu_process_transport_factory.cc(1007)] Lost UI shared context.
我尝试删除--disable-gpu
标志,因为我读到以后的Chrome版本可能不需要此标志。我目前已安装最新版本的Chrome(69.0.3497.100),并且正在使用Windows 7。
我需要做什么才能使测试以无头模式运行?我的目的是检查我是否可以在本地的无头模式下正常运行,然后在Linux Jenkins节点上让它在Chrome的无头模式下运行,我们目前在该节点上使用XVFB,但事实证明它在测试超时中过于脆弱例子。
谢谢
编辑
关于其他人将其标记为重复的情况-我应该说,当我尝试使用无头选项时,如果未设置chrome选项,则测试无法运行,Chrome会按预期启动,并且测试成功运行并通过。
我的测试失败了,没有发现这样的元素类型错误,如果我查看了失败的屏幕截图,我只会看到黑色背景内的白色方块(可能是根据我设置的--window-size选项)< / p>
答案 0 :(得分:2)
正如您提到的,您正在Linux Jenkins节点上使用 Chrome无头模式,您需要考虑以下因素:
Google团队将 Headless Chrome 作为 GA(通用)首次发布时,文章Getting Started with Headless Chrome
提到:< / p>
--disable-gpu \ # Temporarily needed if running on Windows.
注释添加为:
现在,如果您在Windows上运行,则还希望包含
--disable-gpu
标志。
根据讨论Headless: make --disable-gpu flag unnecessary
,很明显:
在 Linux 或 Mac OSX 上,不再需要
--disable-gpu
标志。修复了错误SwiftShader fails an assert on Windows in headless mode
后,Windows上也将不再需要它。
您可以在讨论ChromeDriver showing Lost UI Shared Context
中找到有关幕后发生的事情的详细讨论。因此第一步,您需要删除参数:'--disable-gpu'
您似乎正在使用参数--window-size=800,600
执行测试,这意味着Viewport减少了。
为了利用最大可能的视口,您必须通过参数'start-maximized'
以最大化模式初始化 Chrome浏览器。
从Angular角度来看,您可以通过使用适当的expected_conditions
来避免超时。您可以在WebDriverWait not working as expected
最后,我不确定您在中的含义是什么......当我尝试使用无头选项且未设置chrome选项时,我的测试无法运行... 。也许只能通过 chromeOptions
调用参数'-headless',而不能使用其他选择。
答案 1 :(得分:0)
运行[1010 / 161441.019:ERROR:gpu_process_transport_factory.cc(1007)]时出现相同的错误,丢失了UI共享上下文。
但是我的测试进行得很完美。我已将此https://gist.github.com/cvuorinen/543c6f72f8ec917ebfd596802d387aa3
推荐给您希望以下内容对您有帮助
https://cvuorinen.net/2017/05/running-angular-tests-in-headless-chrome/
https://developers.google.com/web/updates/2017/04/headless-chrome