Chrome Headless模式(一)


前言:

最近在做webUI的自動化,當本地執行腳本時,會啟動瀏覽器的UI界面,導致其他工作無法進行。並且當電腦鎖屏時,chromer driver 會退出,無法繼續執行。查網上的資料,headerless Browser模式可以在后台運行瀏覽器。

1、Headerless Browser是什么鬼?

Headerless Browser(無頭的瀏覽器)是瀏覽器的無界面狀態,可以在不打開瀏覽器GUI的情況下,使用瀏覽器支持的性能。

Chrome Headless相比於其他的瀏覽器,可以更便捷的運行web自動化,編寫爬蟲、截圖等。通常是由編程或者命令行來控制的。

好處: 

    可以加快UI自動化測試的執行時間,對於UI自動化測試,少了真實瀏覽器加載css,js以及渲染頁面的工作。無頭測試要比真實瀏覽器快的多。

    可以在無界面的服務器或CI上運行測試,減少了外界的干擾,使自動化測試更穩定。

2、命令行模式運行

我本地的環境:

  • 系統:mac
  • chrome瀏覽器版本:

命令行啟動chrome:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --headless --remote-debugging-port=9222 https://www.baidu.com

參數說明:

  • --headless:無頭模式,就是無界面模式運行
  • --remote-debugging-port:開啟遠程調試,端口9222和我們之前轉發出來的端口一致
  • --user-data-dir:設置獨立的文件保存目錄,建議一個網站一個目錄
  • --crash-dumps-dir:設置的crash文件保存目錄

  如果沒有指定crash-dumps-dir可能會報錯。

  ERROR:xattr.cc(64)] setxattr org.chromium.crashpad.database.initialized on file /var/folders/gx/1m0t1z_d03dg4pjhv7bwwt_c0000gp/T/: Operation not permitted (1)

加上crash-dumps-dir參數,命令如下:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --headless --crash-dumps-dir=/Users/work/baidu http://www.baidu.com/

 驗證是否成功開啟headless chrome 的服務:

  隨意打開一個瀏覽器窗口,輸入http://localhost:9222,如果看到如下效果,就說明成功開啟。

      

3、連接遠程端口

如果是本機調試,直接打開:http://localhost:9222/json,效果如下圖所示:

 

 打開http://localhost:9222/json可以看到有一個devtoolsFrontendUrl,那就是開發者工具的前端地址,就是一個html應用,url里面傳過去WebSocket調試地址。打開這個地址就可以看到熟悉的開發者工具了!注意:這個窗口調試的是遠程chrome上的頁面。

 

其他的一些已知接口:

4、截圖

截圖命令:--screenshot命令

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome  --headless --crash-dumps-dir=/Users/work/baidu --screenshot http://www.baidu.com/

 

使用--screenshot命令會在當前工作目錄中保存截圖為screenshot.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM