随着Chrome 59的发布,“无头”模式为now available稳定版Linux和macOS(以及即将推出的Windows与Chrome 60)。这使我们能够运行功能齐全的Chrome版本,而不需要任何可见的用户界面,这是一种用于自动化测试的强大功能。 Here are examples.检测Chrome以JavaScript运行在无头模式下
chrome --headless --disable-gpu --dump-dom https://stackoverflow.com/
在我的JavaScript测试跑步,我喜欢使用的浏览器来记录尽可能多的信息越好,以帮助隔离问题。例如,我记录了许多navigator
的属性,包括当前的浏览器插件:
JSON.stringify(Array.from(navigator.plugins).map(p => p.name))
["Chrome PDF Viewer","Widevine Content Decryption Module","Shockwave Flash","Native Client","Chrome PDF Viewer"]
我的理解是,Chrome的应该行为相同的无头模式,但我有足够的经验,怀疑可能会显着改变渲染流水线的新特性。
现在,我要在两种模式下运行测试。我希望测试运行人员记录是否正在使用无头模式。我可以在测试配置中传递这些信息,但我宁愿有一个纯粹的JavaScript解决方案,我可以将其构建到测试运行器本身中。但是,我一直无法找到任何揭示无头模式是否激活的浏览器界面。
有没有什么方法可以检测Chrome是否在JavaScript的无头模式下运行?
[我确认'window.chrome === undefined'似乎工作](https://i.stack.imgur.com/68yHd.png )。 –
我已经浏览了无代码的Chrome代码,但不知何故错过了[该用户代理的最高定义](https://chromium.googlesource.com/chromium/src.git/+/lkgr/headless/public/ headless_browser.cc#19)。感谢您指出。如果有更明确的东西,我会让赏金流通,但这可能是我将要解决的问题。 –