Playwright是微軟提供的一個web自動化工具,和puppeteer比較類似,微軟自己對它的優勢介紹如下:
支持所有瀏覽器
-
跨平台WebKit測試. 使用Playwright,測試你的應用程序在Apple Safari中的表現,並為Windows、Linux和macOS構建WebKit。在本地和CI上進行測試。
-
測試移動。使用 device emulation在移動網絡瀏覽器中測試您的響應式 Web 應用程序。
-
無頭和有頭。Playwright支持所有瀏覽器和所有平台的headless(無瀏覽器UI)和headful(有瀏覽器UI)模式。Headful非常適合調試,而headless則更快,適合CI/cloud執行。
快速可靠的執行
-
自動等待API。扮演者交互 auto-wait for elements要准備好。這提高了可靠性並簡化了測試編寫。
-
免超時自動化。Playwright接收瀏覽器信號,如網絡請求、頁面導航和頁面加載事件,以消除導致flakiness的睡眠超時需求。
-
使用瀏覽器上下文進行精益並行化。為多個並行化的隔離執行環境重用一個瀏覽器實例 browser contexts.
-
彈性元素選擇器。Playwright可以依靠面向用戶的字符串,如文本內容和可訪問性標簽來 select elements。這些字符串比與DOM結構緊密耦合的選擇器更有彈性。
強大的自動化功能
-
多域、多頁面、多框架。Playwright是一個流程外的自動化驅動,它不受頁面內JavaScript執行范圍的限制,可以自動處理 multiple pages的場景。
-
強大的網絡控制。Playwright引入了上下文范圍內的 network interception來存根和模擬網絡請求。
-
現代web特性。Playwright通過 shadow-piercing selectors、 geolocation, permissions、web workers和其他現代web API支持web組件。
與您的工作流程集成
-
單行本安裝。運行npm i playwright自動下載瀏覽器依賴關系,讓您的團隊快速上手。
-
支持TypeScript。Playwright內置了自動完成和其他優點的類型。
-
調試工具。Playwright與 editor debugger and browser developer tools一起工作,暫停執行並檢查網頁。
下面是一個簡單的例子。
const {chromium} = require('playwright');
(async () => {
const browser = await chromium.launch({
headless: false,
executablePath: 'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe'
});
const page = await browser.newPage();
await page.goto('https://www.cnblogs.com/TianFang/');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
最近拿它當蜘蛛程序簡單的試了一下,還是非常好用的,主要的好處有:
-
更強大、好用的api
-
更易讀的文檔
-
更方便的調試功能
-
易調試
-
除了nodejs外,還有c#的版本
當然,目前的主流測試工具已經有不少了,我本來也是拿它當蜘蛛使用,就不深入比較了,感興趣的朋友可以看下網上的對比: Puppeteer, Selenium, Playwright, Cypress – how to choose?。
相關站點: