pupeteer初體驗

官方文檔: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagescreenshotoptionsnode

puppetter-demo

https://github.com/artiely/puppeteer-demo.gitgit

Puppeteer 介紹

Puppeteer 翻譯是操縱木偶的人,利用這個工具,咱們能作一個操縱頁面的人。Puppeteer是一個Nodejs的庫,支持調用Chrome的API來操縱Web,相比較Selenium或是PhantomJs,它最大的特色就是它的操做Dom能夠徹底在內存中進行模擬既在V8引擎中處理而不打開瀏覽器,並且關鍵是這個是Chrome團隊在維護,會擁有更好的兼容性和前景。github

Puppeteer 用處

利用網頁生成PDF、圖片
爬取SPA應用,並生成預渲染內容(即「SSR」 服務端渲染)
能夠從網站抓取內容
自動化表單提交、UI測試、鍵盤輸入等
幫你建立一個最新的自動化測試環境(chrome),能夠直接在此運行測試用例6.捕獲站點的時間線,以便追蹤你的網站,幫助分析網站性能問題chrome

基礎知識點

  • puppeteer.launch() 建立瀏覽器實例
  • puppeteer.newPage() 建立一個新頁面
  • puppeteer.goto() 進入指定網站
  • page.screenshot() 截屏
  • page.pdf() 輸出爲pdf 注意必須是headless=true
  • page.evaluate() 在瀏覽器中執行函數想到與在控制檯執行函數 返回promise
  • page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]]) 等待 能夠是等待一段時間,某個函數執行或某個DOM的出現
  • page.click(selector[, options]) 點擊某個元素
  • page.type(selector, text[, options]) 文本輸入
  • page.frames() 獲取當前頁面全部的 iframe,而後根據 iframe 的名字精確獲取某個想要的 iframe
  • iframe.$('.srchsongst') 獲取 iframe 中的某個元素
  • iframe.evaluate() 在瀏覽器中執行函數,至關於在控制檯中執行函數,返回一個 Promise
  • Array.from 將類數組對象轉化爲對象
  • iframe.$eval() 至關於在 iframe 中運行 document.queryselector 獲取指定元素,並將其做爲第一個參數傳遞
  • iframe.$$eval 至關於在 iframe 中運行 document.querySelectorAll 獲取指定元素數組,並將其做爲第一個參數傳遞
  • page.emulate() 指定設備
const devices = require('puppeteer/DeviceDescriptors');
const iPhone = devices['iPhone 6'];
await page.emulate(iPhone)

參考
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagescreenshotoptions
https://cloud.tencent.com/developer/article/1006000
https://www.jianshu.com/p/2f04f9d665ce
http://cnodejs.org/topic/5a4d8d2299d207fa49f5cbbcapi

相關文章
相關標籤/搜索