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