丢失的UI共享上下文错误-在无头Chrome中运行量角器测试

时间:2018-10-09 11:27:36

标签: angularjs angular selenium google-chrome protractor

我正在尝试使用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>

2 个答案:

答案 0 :(得分:2)

正如您提到的,您正在Linux Jenkins节点上使用 Chrome无头模式,您需要考虑以下因素:


-disable-gpu

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