最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:16:58
文檔

HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹

HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹:Headless Chrome指在headless模式下運(yùn)行谷歌瀏覽器。本質(zhì)就是不用谷歌運(yùn)行谷歌!它將由Chromium和Blink渲染引擎提供的所有現(xiàn)代網(wǎng)頁(yè)平臺(tái)的特征都轉(zhuǎn)化成了命令行。它有什么用?Headless瀏覽器是一種很好的工具,用于自動(dòng)化測(cè)試和不需要可視化用戶界面的服務(wù)器。
推薦度:
導(dǎo)讀HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹:Headless Chrome指在headless模式下運(yùn)行谷歌瀏覽器。本質(zhì)就是不用谷歌運(yùn)行谷歌!它將由Chromium和Blink渲染引擎提供的所有現(xiàn)代網(wǎng)頁(yè)平臺(tái)的特征都轉(zhuǎn)化成了命令行。它有什么用?Headless瀏覽器是一種很好的工具,用于自動(dòng)化測(cè)試和不需要可視化用戶界面的服務(wù)器。

Headless Chrome指在headless模式下運(yùn)行谷歌瀏覽器。本質(zhì)就是不用谷歌運(yùn)行谷歌!它將由Chromium和Blink渲染引擎提供的所有現(xiàn)代網(wǎng)頁(yè)平臺(tái)的特征都轉(zhuǎn)化成了命令行。

它有什么用?

Headless瀏覽器是一種很好的工具,用于自動(dòng)化測(cè)試和不需要可視化用戶界面的服務(wù)器。例如,你想在一個(gè)網(wǎng)頁(yè)上運(yùn)行一些測(cè)試,從網(wǎng)頁(yè)創(chuàng)建一個(gè)PDF,或者只是檢查瀏覽器怎樣遞交URL。

警告:在Mac和Linux上的Chrome 59可以運(yùn)行Headless模式。支持Windows的會(huì)很快提供。

命令行運(yùn)行Headless Chrome

Chrome 安裝(需要帶梯子)

  • 下載地址

  • 幾個(gè)版本的比較

  • Chromium 不是Chrome,但Chrome的內(nèi)容基本來(lái)源于Chromium,這個(gè)是開源的版本,小時(shí)級(jí)別的更新

  • Canary 是試驗(yàn)版,翻譯過(guò)來(lái)就是金絲雀,金絲雀對(duì)瓦斯等毒氣很敏感,濃度稍高就會(huì)停止鳴叫甚至掛掉,金絲雀是瓦斯等毒氣檢測(cè)的土辦法,這個(gè)場(chǎng)景在《尋龍?jiān)E》中黃渤的操作中也能看到。哈哈 扯遠(yuǎn)了,這個(gè)是daily build 版本。

  • Dev 是開發(fā)版,weekly build版本

  • Beta 是測(cè)試版,monthly build版本

  • Stable 是穩(wěn)定版,不定期更新,一般也是一個(gè)月左右一次

  • 更新頻率 Chromium > Chrome Canary > Chrome Dev > Chrome Beta > Chrome Stable

  • Chrome Dev、Chrome Beta 和 Chrome Stable三者只能同時(shí)出現(xiàn)一個(gè)

  • Chromium 、Chrome Canary 和 剩下的任意一個(gè)可共存

  • Windows平臺(tái)下載下來(lái)的可能只是一個(gè)在線安裝的程序,下載離線版在下載頁(yè)面的URL里面加參數(shù)standalone=1

  • 命令行快捷配置(Mac環(huán)境)

    ~/.bashrc 中加入

    alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
    alias chrome-canary="/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary"

    重新打開終端,我們就可以直接通過(guò) chrome打開穩(wěn)定版的Chrome,chrome-canary打開試驗(yàn)版的Chrome了。

    命令行啟動(dòng)Chrome

  • 參考官方說(shuō)明, Headless模式需要Chrome Version >= 59

  • 使用Chrome打開百度首頁(yè)(帶界面),能看到瀏覽器的打開

  • chrome

  • 使用無(wú)界面模式啟動(dòng)Chrome打開百度首頁(yè)(無(wú)界面),但不到瀏覽器界面打開,但任務(wù)欄會(huì)有圖標(biāo)

  • chrome --headless

  • 使用無(wú)界面模式啟動(dòng)Chrome并將頁(yè)面轉(zhuǎn)為PDF,可以看到output.pdf的輸出

  • chrome --headless --print-to-pdf

  • 使用無(wú)界面模式啟動(dòng)Chrome并截圖,可以看到screenshot.png的輸出

  • chrome --headless --screenshot --window-size=414,736

  • 使用無(wú)界面模式啟動(dòng)Chrome并打開交互環(huán)境

  • chrome --headless --repl

  • 使用無(wú)界面模式啟動(dòng)Chrome,并開啟調(diào)試Server

  • chrome --headless --remote-debugging-port=9222

  • 參考 Chrome命令行參數(shù)列表

  • 命令行操作Headless Chrome

  • 確保已經(jīng)啟動(dòng)Headless Chrome,并啟用了調(diào)試Server

  • chrome --headless --remote-debugging-port=9222

  • 安裝chrome-remote-interface

  • npm install chrome-remote-interface -g

  • 查看命令說(shuō)明,這里可以進(jìn)行各種相關(guān)操作

  • "
    $ chrome-remote-interface

    Usage: chrome-remote-interface [options] [command]
    
    Commands:
    
     inspect [options] [<target>] inspect a target (defaults to the first available target)
     list list all the available targets/tabs
     new [<url>] create a new target/tab
     activate <id> activate a target/tab by id
     close <id> close a target/tab by id
     version show the browser version
     protocol [options] show the currently available protocol descriptor
    
    Options:
    
     -h, --help output usage information
     -t, --host <host> HTTP frontend host
     -p, --port <port> HTTP frontend port
     -s, --secure HTTPS/WSS frontend

    "

  • 打開一個(gè)新頁(yè)面

  • chrome-remote-interface new

  • 查看剛打開的頁(yè)面

  • chrome-remote-interface inspect

  • 查看當(dāng)前頁(yè)面的URL

  • >>> Runtime.evaluate({expression:'location.href'})

    可編程方式運(yùn)行Headless Chrome

    直接通過(guò)代碼調(diào)用命令行啟動(dòng)Chrome 調(diào)試Server

    可以通過(guò)系統(tǒng)調(diào)用的方式直接調(diào)用上面的命令行執(zhí)行方式。這種方式在跨平臺(tái)的情況下會(huì)有一些工作需要做。

    Google出品的Lighthouse 這個(gè)網(wǎng)頁(yè)質(zhì)量檢查工具,有一個(gè)組件專門做這事,考慮了各種平臺(tái)的兼容性問(wèn)題,源碼參考lighthouse-chromelauncher,這個(gè)組件現(xiàn)在已經(jīng)單獨(dú)獨(dú)立出來(lái),作為一個(gè)單獨(dú)的NPM組件chrome-launcher,可以直接使用這個(gè)在Node平臺(tái)下調(diào)用,其他平臺(tái)的也可以此為參考。

    const chromeLauncher = require('chrome-launcher');//啟用無(wú)界面模式并開啟遠(yuǎn)程調(diào)試,不同引用版本和方式,調(diào)用方式可能有些區(qū)別//chromeLauncher.run({chromeLauncher.launch({// port: 9222,chromeFlags: ['--headless']}).then((chrome) => {// 拿到一個(gè)調(diào)試客戶端實(shí)例console.log(chrome)chrome.kill();});

    通過(guò)客戶端的封裝組件進(jìn)行瀏覽器交互

    實(shí)現(xiàn)了ChromeDevTools協(xié)議的工具庫(kù)有很多,chrome-remote-interface是NodeJS的實(shí)現(xiàn)。

    Chrome調(diào)試Server開啟的是WebSocket交互的相關(guān)實(shí)現(xiàn),要用編程的方式實(shí)現(xiàn)還需要封裝一些WebSocket命令發(fā)送、結(jié)果接收等這一系列操作,這些chrome-remote-interface已經(jīng)幫我們做了,更多實(shí)例可以參考chrome-remote-interface的wiki。

    const chromeLauncher = require('chrome-launcher');const chromeRemoteInterface = require('chrome-remote-interface')//啟用無(wú)界面模式并開啟遠(yuǎn)程調(diào)試,不同引用版本和方式,調(diào)用方式可能有些區(qū)別//chromeLauncher.run({chromeLauncher.launch({port: 9222,chromeFlags: ['--headless']}).then((launcher) => {chromeRemoteInterface.Version({host:'localhost',port:9222}).then(versionInfo => {console.log(versionInfo)});chromeRemoteInterface({host:'localhost',port:9222}).then((chrome) => {//這里調(diào)用ChromeDevToolsProtocol定義的接口const {Network,Page} = chrome;Network.requestWillBeSent((params) => {let {request} = params;let {url} = request;console.log(url)});Promise.all([Network.enable(),Page.enable()
     ]).then(() => {Page.navigate({url:'https://www.baidu.com'})});setTimeout(() => {launcher.kill()},5000);})});

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹

    HeadlessChrome開發(fā)工具庫(kù)的實(shí)例介紹:Headless Chrome指在headless模式下運(yùn)行谷歌瀏覽器。本質(zhì)就是不用谷歌運(yùn)行谷歌!它將由Chromium和Blink渲染引擎提供的所有現(xiàn)代網(wǎng)頁(yè)平臺(tái)的特征都轉(zhuǎn)化成了命令行。它有什么用?Headless瀏覽器是一種很好的工具,用于自動(dòng)化測(cè)試和不需要可視化用戶界面的服務(wù)器。
    推薦度:
    標(biāo)簽: chrome 示例 實(shí)例
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top