Playwright 介绍

一、Playwright 是什么?

Playwright 是微软2020年开源的一个用于 Web 测试和自动化的Node.js 库,通过一个 API,可以自动化运行在Chrome,Edge、Firefox和Safari等浏览器上。它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API 功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。Playwright 支持大部分的语言,Node.js,Python,Java,.net,并且支持谷歌,火狐浏览器,WebKit,对于移动端也支持,可以在 Windows、Linux、macOS 等机器上运行。脚本执行支持同步或者异步的方式。

说到UI自动化,可能大家以前主要是用Selenium。毕竟Selenium可是UI自动化方面的王者。而且Selenium上手很快,使用者广泛,社区活跃,遇到问题随时可以找到一大堆相关的网页给你提供帮助。
那既然这样,为什么新出的这个Playwright还能掀起一阵热潮呢?
一方面这是IT技术领域的一个趋势,从业人需要时刻关注业内的新技术,新方向,不断提升自己的能力,或者给公司,团队带来新的idea,这样才能不断在职业生涯中稳步向前。另一方面,Selenium虽然有着各种突出的优势,但是弊端也很明显:
依赖多种不同的driver,根据浏览器的不断更新,就要不断去维护这些driver,以及处理相应的适用性问题。比如chromedriver升级到适用chrome version: 88,关于之前Ctrl+a的调用就不支持了,需要调整相应code。

那Playwright和Selenium具体有什么去区别呢?

区别一:

Selenium只提供了Web自动化功能,如果要做自动化测试,要结合其他自动化测试框架

Playwright是面向自动化测试的,除了Web自动化功能,它也包含了自动化测试的功能框架

区别二:

两者的自动化原理:Selenium 需要单独安装 WebDriver,而 Playwright 内置浏览器驱动,直接运行

二、为什么建议你使用Playwright 来做自动化测试?

Playwright 在跨浏览器、跨平台和跨语言方面的能力非常突出,

为什么建议你使用 Playwright ?有以下几个原因:

  • 兼容性非常强大。 Playwright 可以在Windows、Linux 和 macOS 上使用,所有的主流浏览器(Chromium、 WebKit、 Firefox) 都支持。并且,它还支持多种编程语言,比如Java、 JavaScript、 Python 和 .NET ,有统一的API来让你调用。
  • 稳定性非常强大。 Playwright会自动等待元素出现,并可操作,从而可以减少不稳定性。它的 web 优先断言和重试逻辑有助于确保测试的可靠性,而不需要手动设置超时。
  • 完全测试隔离。 每个测试都是在单独的浏览器上下文中运行,Playwright会模拟一个全新的浏览器配置文件,这样可以确保每个测试之间不会互相干扰。您可以保存身份验证状态,避免重复登录,同时保持测试的独立性。
  • 高级测试场景。 Playwright允许你在多个选项卡、用户或上下文的复杂工作流中测试,并且可以让你操作真实的浏览器输入和操作DOM元素,模仿真实的用户操作。
  • 丰富的调试工具。 Playwright Inspector、Codegen和Trace Viewer这些工具,方便你快速地检查元素和调试。还提供了视频、屏幕快照和 DOM 快照等方式,让你可以全面的了解测试全过程。

三、Playwright 是如何工作的?

在讲Playwright的工作原理前,我们可以先看下Selenium是如何工作的。Selenium会将每个命令作为独立的 HTTP请求发送,然后接收对应的JSON 响应,你的每个操作,比如打开浏览器窗口、单击元素或向输入框输入文本都会作为独立的 HTTP 请求发送。

而这种做法,往往意味着,我们必须等待更长的时间才能得到响应,并增加了出错的可能性。

而Playwright是怎么运行的呢?Playwright 没有通过单独的 WebSocket 与每个驱动程序进行通信。而是依赖于一个单独的 WebSocket 连接与所有驱动程序进行通信,直到测试完成。这允许在单个连接上快速发送命令,从而减少出错。

提高性能

  • 减少开销:多个 WebSocket 连接会消耗系统资源,而 Playwright 通过一个连接管理所有驱动程序,减少了不必要的开销。
  • 降低延迟:减少了 WebSocket 连接建立、维护的开销,提高了整体响应速度。
  • 更快的执行速度:统一管理多个浏览器实例,减少通信延迟,尤其在并发测试时效果更明显。

更好的资源管理

  • 减少系统负担:单个 WebSocket 消耗的内存和 CPU 资源较少,避免了多个连接导致的资源竞争。
  • 简化网络通信:减少了数据包在网络中的来回传输,降低了网络负载。

大家有兴趣的,可以移步Playwright官网进行更多学习:Fast and reliable end-to-end testing for modern web apps | Playwright

Playwright是一个开源的自动化工具,主要用于Web应用的自动化测试和自动化任务。它由Microsoft开发,支持多种浏览器(如Chrome、Firefox、Edge)和多种编程语言(如Python、JavaScript、TypeScript、C#、Java)。 以下是Playwright的一些主要特点和功能: 1. **跨浏览器支持**:Playwright支持多种主流浏览器,包括Google Chrome、Mozilla Firefox和Microsoft Edge。这意味着你可以使用同一套脚本在不同的浏览器上进行测试。 2. **多语言支持**:Playwright提供了多种编程语言的API,包括Python、JavaScript、TypeScript、C#和Java。这使得开发者可以使用自己熟悉的语言进行自动化任务的编写。 3. **自动等待**:Playwright内置了自动等待机制,可以自动等待元素加载完成或条件满足,避免了手动添加等待时间的繁琐。 4. **强大的选择器**:Playwright提供了多种选择器(如CSS选择器、XPath、文本选择器等),使得定位页面元素更加方便和灵活。 5. **无头模式和有头模式**:Playwright支持无头模式(Headless)和有头模式(Headful)。在无头模式下,浏览器不会显示界面,适合在服务器上运行自动化任务;在有头模式下,浏览器会显示界面,适合调试和可视化操作。 6. **网络拦截和控制**:Playwright可以拦截和控制网络请求和响应,方便进行网络相关的测试和模拟。 7. **并行执行**:Playwright支持并行执行测试用例,提高了测试效率。 以下是一个简单的示例,展示了如何使用Playwright进行自动化测试: ```python from playwright.sync_api import sync_playwright def run(playwright): browser = playwright.chromium.launch(headless=False) page = browser.new_page() page.goto("https://example.com") page.fill("input[name='username']", "testuser") page.fill("input[name='password']", "password") page.click("button[type='submit']") page.wait_for_selector("div.login-success") print(page.content()) browser.close() with sync_playwright() as playwright: run(playwright) ``` 在这个示例中,我们使用Playwright打开了一个浏览器,导航到一个示例网站,填写了登录信息,并提交了表单,然后等待登录成功的提示信息,最后打印了页面内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值