随着Chrome 59的发布,在Linux和macOS的稳定版本中,“无头”模式已经可用(很快也将在Chrome 60的Windows版本中提供)。这使我们能够运行一个完整功能的Chrome版本,而没有任何可见的UI,这是自动化测试中非常有用的功能。 这里有一些示例。
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的解决方案,将其构建到测试运行器本身中。但是,我无法找到任何浏览器接口来显示无头模式是否处于活动状态。
有没有办法从JavaScript中检测Chrome是否在无头模式下运行?
window.chrome
是未定义的,所以我会避免使用它... - Jason Lydon