Puppeteer筆記(一):Puppeteer簡介

wuwei丶發表於2020-05-20

一、Puppeteer簡介

  Puppeteer是NPM庫,它提供了NodeJS高階API來控制Chrome。Puppeteer 預設以無頭(無介面)方式執行,但也可以配置為執行有介面的Chrome。

  Puppeteer 提供了一系列 API,通過 Chrome DevTools Protocol 協議控制 Chromium/Chrome 瀏覽器的行為

二、什麼是Headless Chrome

  (1)在無介面的環境中執行 Chrome
  (2)通過命令列或者程式語言操作 Chrome
  (3)無需人的干預,執行更穩定
  (4)在啟動 Chrome 時新增引數 --headless,便可以 headless 模式啟動 Chrome

三、Puppeteer 結構

  API分層結構,反映了瀏覽器結構

  • Puppeteer: 使用DevTools協議與瀏覽器進行通訊
  • Browser:對應一個瀏覽器例項,一個 Browser 可以包含多個 BrowserContext、
  • BrowserContext: 對應瀏覽器一個上下文會話,就像我們開啟一個普通的 Chrome 之後又開啟一個隱身模式的瀏覽器一樣,BrowserContext 具有獨立的 Session(cookie 和 cache 獨立不共享),一個 BrowserContext 可以包含多個 Page
  • Page:表示一個 Tab 頁面,通過 browserContext.newPage()/browser.newPage() 建立,browser.newPage() 建立頁面時會使用預設的 BrowserContext,一個 Page 可以包含多個 Frame
  • Frame: 一個框架,每個頁面有一個主框架(page.MainFrame()),也可以多個子框架,主要由 iframe 標籤建立產生的
  • ExecutionContext: 是 javascript 的執行環境,每一個 Frame 都一個預設的 javascript 執行環境
  • ElementHandle: 對應 DOM 的一個元素節點,通過該該例項可以實現對元素的點選,填寫表單等行為,我們可以通過選擇器,xPath 等來獲取對應的元素

四、Puppeteer 用途

  • 網頁截圖或者生成 PDF
  • 自動提交表單,進行 UI 測試,鍵盤輸入等。
  • 建立一個時時更新的自動化測試環境。 使用最新的 JavaScript 和瀏覽器功能直接在最新版本的Chrome中執行測試。
  • 捕獲網站的時間線,幫助診斷效能問題
  • 網路爬蟲
  • ......

相關文章