隨着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)。感謝您指出。如果有更明確的東西,我會讓賞金流通,但這可能是我將要解決的問題。 –