現在,Puppeteer 作為一種網頁抓取工具越來越受到關注。 由於簡單,作為開源工具的可用性和開發單頁應用程序的能力,Puppeteer 越來越受歡迎。 在開始學習 Puppeteer 網頁抓取工具之前,我們應該對命令行、Javascript 和 HTML DOM 結構有基本的了解。 這 木偶教程 已分為幾篇文章,在下面的目錄中指定。
木偶教程
Tosca教程1: 木偶戲概述
托斯卡 教程 Tutorial #2: 木偶環境變量
托斯卡 教程 Tutorial #3: Puppeteer Web抓取和Puppeteer測試自動化概述
托斯卡 教程 Tutorial #4: 安裝Puppeteer
在這篇文章中 木偶教程,我們將通過示例和 Puppeteer 測試自動化概述來討論 Puppeteer Web Scraping。
木偶網頁抓取
從任何網頁提取數據的過程稱為網頁抓取。 網頁抓取有兩個步驟。 首先,它獲取網頁,然後提取數據。 提取數據後,我們可以將其用於任何API或將其存儲在CSV文件中。
Puppeteer是支持Google Chrome或Chromium瀏覽器的Web抓取的最佳工具之一。 以下示例詳細說明了偽造的網絡抓取操作–
Puppeteer基本Web爬網示例:
步驟1# Puppeteer在Node JS庫上工作。 因此,第一步是在編寫用於Web抓取的腳本之前,包括偽造者庫。
const puppeteerObj = require("puppeteer");
步驟2# 包含Puppeteer類之後,我們需要使用await關鍵字編寫一個異步函數。 因為Puppeteer使用promises,所以它是必需的。 然後,調用Puppeteer.launch()方法來調用瀏覽器,並調用newPage()方法來創建網頁實例。
const browserWeb = await puppeteerObj.launch();
const pageWeb = await browserWeb.newPage();
步驟3# 現在,調用page.goto()方法以提供所需網站的URL。
await pageWeb.goto("https://lambdageeks.com/");
步驟4# 使用方法page.evaluate()捕獲任何特定元素的文本(在本示例中,我們將捕獲標題文本)。
const data = await pageWeb.evaluate(() => {
const header = document.querySelector(".uabb-heading-text").innerText;
return { header };
在接下來的教程中,我們將討論如何從網絡屏幕上識別任何對象。

步驟5# 在最後一步,我們需要處理數據,然後關閉網頁。 完整的Puppeteer Web抓取代碼如下所示–
const puppeteer = require("puppeteer");
async function scrap() {
// Launch the browser
const browserApp = await puppeteer.launch();
// Create a page instance
const pageApp = await browserApp.newPage();
// invoke the web page for scraping
await pageApp.goto("https://lambdageeks.com/");
// Select any web element
const data = await pageApp.evaluate(() => {
const header = document.querySelector(".uabb-heading-text").innerText;
return { header };
// Here we can do anything with this data. Here displaying the data
console.log(header);
//We close the browser
await browserApp.close();
}
Scrap();
步驟6# 現在,我們可以使用以下命令執行此偽造的Web抓取代碼: 節點index.js
備註: 在下一篇文章“安裝Puppeteer”中,我們將討論Puppeteer的安裝設置並執行上面的Puppeteer Web Scraping代碼。
木偶測試自動化概述
除了抓取網頁外,Puppeteer還具有執行以下活動的功能,
- 捕獲網頁的屏幕快照。
- 我們可以將網頁屏幕另存為pdf文件。
- 可以實現手動步驟的自動化以執行UI測試。
因此,結合以上所有功能,我們可以使用Puppeteer進行測試自動化。 要了解Puppeteer測試自動化,首先,我們需要熟悉軟件測試。
測試概述:
需要進行測試以確保所有軟件要求均得到滿足,而不會出現任何問題。 從軟件開發過程的開始就可以使用不同類型的測試週期。 可以手動或通過自動化方法來測試軟件。
軟件測試的目的是–
- 驗證產品質量。
- 在生產部署之前查找產品的錯誤。
- 滿足要求檢查。
- 測試產品的性能。
測試的類型在這裡說明-
單元測試 –開發人員負責在代碼開發階段執行單元測試。
整合測試 –集成軟件產品的不同組件之後,需要進行此測試。 主要目的是確保所有接口均正常運行。
系統測試 –這是一項詳細的測試,必須在集成後進行,以確保滿足所有要求。
用戶驗收測試 –這也是產品的最終用戶必須執行的詳細測試,以確保質量。
回歸測試 –需要確保在任何軟件增強過程中核心業務流程都能正常運行。
測試自動化的優勢:
- 減少執行週期。
- 避免人為錯誤的機會。
- 最小化測試執行工作。
- 快速軟件發布。
- 增加測試範圍以降低風險。
- 能夠執行並行執行。
為什麼選擇木偶?
在Chrome瀏覽器中執行的大多數手動操作都可以使用Puppeteer自動執行。 因此,Puppeteer是快速簡便地在Web應用程序上進行單元測試的不錯選擇。
- 僅支持Chrome和Chromium瀏覽器。
- 無法進行Coss瀏覽器測試。
- 手機測試無法完成。
無頭Chrome測試:
無頭瀏覽器意味著Puppeteer正在與作為後台應用程序的chrome瀏覽器進行交互,這意味著chrome UI在屏幕上不可見。 因此,無頭鉻測試意味著自動化測試將在隱藏的瀏覽器中執行。 此外,在進行無頭鉻測試之後,木偶戲能夠正確捕獲Web屏幕。
木偶vs硒

下面說明了Puppeteer和Selenium作為自動化測試工具之間的比較-
- 編程語言支持– Puppeteer僅支持JavaScript,而Selenium支持Java,Python,Node.js和C#語言。
- 瀏覽器支持– Puppeteer僅適用於Chrome或Chromium瀏覽器,但Selenium也支持Chrome,Mozilla,Safari,IE,Opera瀏覽器。
- 社區支持– 社區支持僅限於Puppeteer的Google網上論壇,GitHub和Stack Overflow。 但是對於Selenium,可以在多個論壇上獲得廣泛的社區支持。
- 執行速度– Puppeteer腳本的執行比Selenium的執行快。
- 安裝和設置– 木偶戲的安裝和設置是一個更簡單的過程。
- 跨平台支持– Puppeteer不支持它,但是Selenium支持。
- 錄音– 錄製功能在Puppeteer中不可用。 但是此功能可用於Selenium IDE。
- 屏幕截圖– Puppeteer可以將屏幕截圖用作圖像或pdf格式,其中Selenium僅支持圖像格式。
- 測試平台支持——Puppeteer 僅支持 Web 瀏覽器,但 Selenium 可以自動化 Web 和 帶有 Appium 的移動設備.
- 編碼技巧– Puppeteer Selenium Web驅動程序需要它,而Selenium IDE則不需要。
基於上述比較,我們可以得出結論,當我們必須對任何需要快速靈活解決方案的 Web 應用程序執行單元級測試時,Puppeteer 將是最佳選擇。 當需要移動應用程序和跨平台時,另一個工具 Selenium 將是更好的選擇 應用測試。 點擊 這裡 向LambdaGeeks學習硒。
結論:
在這篇介紹性文章中 木偶教程,我們已經了解了 Puppeteer Web Scraping 和 Puppeteer 測試自動化概述。 我們將在下一篇 Puppeteer 文章中了解安裝 Puppeteer 和執行小腳本的分步指南。 請點擊 這裡 訪問該Puppeteer教程的參考門戶。