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?。
相关站点: