开源爬虫神器,Playwright vs Puppeteer 对比,你应该选择哪个?
Playwright是一個用于瀏覽器自動化的 Node.js庫。 Puppeteer也是一個用于瀏覽器自動化的 Node.js 庫。讓我們看看它們的歷史由來,并考慮在實際使用應該如何選擇。Angular 團隊對自動化框架進行了調查,自動化測試框架的使用比例,如下圖所示
圖片來自TestCafe vs Cypress: Core Differences | BrowserStack
測試自動化有哪些類似的開源工具?
歷史背景
首先了解一些歷史背景可能會有所幫助。瀏覽器自動化并不是一項新技術。
Selenium
Selenium自 2004 年以來一直存在,很長一段時間以來,它都是該類別的首選工具。雖然它的主要用例是為網站實現測試套件,但程序員也將它用于截屏或在網站不提供 API 時自動執行任務。
然而,Selenium 以不可靠而著稱。Selenium 測試通常是不穩定的,由于難以重現的非顯而易見的原因而間歇性地失敗。
Selenium 也相當耗費資源,部分原因是它通常用于運行完整的瀏覽器。最終,在某些情況下,程序員開始使用無頭瀏覽器。這些瀏覽器完成了完整瀏覽器的大部分工作,但它們實際上并不呈現 UI。PhantomJS是比較流行的一種。
無頭瀏覽器可以很好地測試更簡單的網站,但要測試網站可以做的所有事情,它們需要通過支持各種 Web 標準來盡可能接近地模擬完整的瀏覽器。然而,由于瀏覽器變得如此復雜,全面的支持幾乎是一項不可能完成的任務。
2017年,PhantomJS 的作者棄用了它,他這樣做的原因是谷歌宣布了無頭 Chrome,它首先在 Chrome 59 中可用。Firefox 在當年晚些時候跟進了無頭模式。這些發展使得針對人們實際使用的瀏覽器編寫高效的測試和腳本成為可能。
優勢
缺點
Puppeteer
2017年,谷歌公開發布了 Puppeteer,跟進了無頭 Chrome 。Chrome DevTools 團隊開發了它,使其比其他類似項目具有重大優勢,因為它得到了世界上使用最廣泛的瀏覽器的同一家公司的機構支持。
Puppeteer 可以驅動 Chrome 或 Chromium(所基于Chrome的開源瀏覽器),默認情況下,安裝 Puppeteer 還會下載兼容版本的 Chromium。這避免了您的瀏覽器最終獲得破壞 Puppeteer 的更新的其他可能情況。
圖片來自知乎,puppeteer vs selenium 比較
Puppeteer 讓瀏覽器自動化的入門變得容易。這部分是因為它與瀏覽器的交互方式。Selenium 使用WebDriver 協議,該協議需要運行一個充當 Selenium 和瀏覽器之間中介的服務器。例如,有ChromeDriver、 geckodriver(用于 Firefox)和 safaridriver。這種對特殊服務器的要求增加了復雜性。
相比之下,Puppeteer 使用非標準DevTools 協議控制 Chrome ,因此它直接與瀏覽器對話,并通過 Selenium 提供額外的功能,例如 攔截網絡請求。
優勢
缺點
Playwright
當 Microsoft 于2020 年 1 月 31 日發布Playwright的第一個公共版本時,我們獲得了一個新選項。
如果您比較Playwright和 Puppeteer的貢獻者頁面 ,您會注意到Puppeteer的前兩個貢獻者現在在 Playwright 上工作。Puppeteer 團隊實質上是從 Google 轉移到 Microsoft 并成為 Playwright 團隊。
因此,Playwright 在很多方面與 Puppeteer 非常相似。API 方法在大多數情況下是相同的,并且默認情況下 Playwright 還捆綁了兼容的瀏覽器。
Playwright 最大的區別在于跨瀏覽器支持。它可以驅動 Chromium、WebKit(Safari 的瀏覽器引擎)和 Firefox。
您可以在Is Playwright Ready?中查看測試套件的狀態。
尚未與 WebKit 和 Firefox 團隊一起開發,Playwright 團隊可能無限期地維護這些瀏覽器的更新而更新,這可能會影響 Playwright 跨瀏覽器支持的長期可靠性。
最后一個值得注意的區別是 Playwright 具有更強大的瀏覽器上下文功能,可讓您使用單個瀏覽器實例模擬多個設備。每個瀏覽器上下文在 cookie、本地存儲等方面都與其他上下文隔離,每個上下文也可以在其下有多個頁面。
優勢
如何選擇
因為 Playwright 和 Puppeteer 很大程度上是由同一個團隊開發的,并且有如此相似的 API,所以從 Puppeteer 遷移到 Playwright并不太難。然而,您不應該僅僅因為 Playwright 較新而選擇 Playwright,因為在此之前 API可能會發生重大變化 。
要考慮的三個主要因素:跨瀏覽器支持、長期維護支持以及瀏覽器自動化的特定用例。
對于跨瀏覽器支持,重要的是要知道 Puppeteer最近添加了對驅動 Firefox 的實驗性支持,并且無需修補 Firefox 就可以做到這一點。
但是,似乎沒有任何關于 Puppeteer 支持 WebKit 的公開工作。請注意,即使是 iOS上的第三方瀏覽器 也需要使用 WebKit 作為其引擎。因此,如果對您的 iOS 用戶進行測試很重要,那么 Playwright 應該很有吸引力。
另一方面,許多團隊認為測試多個瀏覽器(通常是 Chrome)不值得邊際收益。Playwright 可以選擇的原因,因為它使跨瀏覽器支持更容易。但是,我們不確定 Playwright 修補 Firefox 和 WebKit 的方法是否會在長期更新緊湊。
無論如何,慶幸 Puppeteer 仍在積極開發中,絕不是因為最初的開發人員的離開,而被放棄的項目。這是 Chrome 團隊支持的好處。
最后,決定使用哪一個取決于你的實際應用。如果您正在執行諸如自動化網站工作流程或截取屏幕截圖之類的工作,那么跨瀏覽器支持對您來說可能并不重要。
堅持使用 Selenium ,因為網絡上已經在 Selenium 方面積累了多年的解決用例,您不必僅僅因為有新的選擇而放棄它。
結論
總的來說,技術框架的選擇,適合自己的才是最好。
本文來自我的個人站點:《開源爬蟲神器,Playwright vs Puppeteer 對比,你應該選擇哪個?》
總結
以上是生活随笔為你收集整理的开源爬虫神器,Playwright vs Puppeteer 对比,你应该选择哪个?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业术语简单释义
- 下一篇: css图片精灵定位_CSS精灵图片(CS