首先,谷歌把Chromium支援了Headless,也就是無頭浏覽器,不用界面直接在CI模式下運作,宣布了phantomjs下崗
幾大應用:
- 爬蟲技術
- 前端unit test單元測試,比如結合karma+jasmine這些
- UI automation test,web界面自動化測試
然後,谷歌還做了一個Puppeteer,也就是用來操作浏覽器的一套接口,可以很友善和Chromium浏覽器通訊
但是,安裝Puppeteer的時候,需要從谷歌官方網站下載下傳對應作業系統的Chromium,下載下傳經常失敗
盡管可以使用手動下載下傳,但畢竟不能自動化,然後就是從淘寶鏡像下載下傳,也需要設定環境變量
發現有一個Puppeteer Chromium Resolver ,用來自動解決這些問題:
npm install puppeteer-chromium-resolver --save
安裝時,會自動安裝Chromium,使用的時候就可以用緩存快速調用了,調用需要使用自定義executablePath
require("puppeteer-chromium-resolver")({
//hosts: ["https://storage.googleapis.com", "https://npm.taobao.org/mirrors"]
}).then(function (revisionInfo) {
console.log("Chromium revision installed.");
revisionInfo.puppeteer.launch({
headless: false,
executablePath: revisionInfo.executablePath
});
});
1,可以自己設定鏡像hosts,預設是官方站和阿裡鏡像,一個下載下傳失敗,自動嘗試另一個,無縫解決國内國外下載下傳
2,下載下傳預設是儲存到user的目錄(也可以指定savePath),而不是node_modules,因為node_modules可能随時删除,下次安裝需要重新下載下傳,同時,如果有多個項目都要用,那麼Chromium也是很大的,300多兆,如果多個太占用空間,存到全局的user目錄,隻存一個,而且下載下傳一次,就不再下載下傳,方案和phantomjs類似
其他問題:
Puppeteer和Chromium Headless固然是極好的,但目前在一些舊的系統上安裝,缺少依賴無法運作,比如在linux centos6,還需要安裝依賴才能進行,可能并不是每個人都有權限去安裝這些依賴,而phantomjs似乎沒有這些依賴問題
依賴可參考:https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md