
Playwright是什么
Playwright 由 Microsoft 构建,是一个 Node.js 库,它通过单个 API 实现 Chromium、Firefox 和 WebKit 的自动化。编写 JavaScript 代码的开发人员可以使用这些 API 来创建新的浏览器页面、导航到 URL,然后与页面上的元素进行交互。此外,由于 Microsoft Edge 构建在开源 Chromium Web 平台上,Playwright 还可以自动化 Microsoft Edge。
Playwright的端到端测试逐渐流行起来。许多开发人员认为它是他们最喜欢使用的框架之一。
State of JS 对开发者的调查显示,虽然 Cypress 的采用率正在上升,但 Playwright 的采用仍处于发展的早期阶段。然而,GitHub 统计数据显示 Playwright 的受欢迎程度正在增长(44,600 个 Star 和 2,200 个 Fork)。

Playwright 默认启动无头浏览器。Playwright 默认启动无头(无界面)浏览器,命令行是使用无头浏览器的唯一方法,因为它不显示 UI。Playwright 还支持运行完整(非无头)Microsoft Edge。

B站学习链接:https://www.bilibili.com/video/BV1gU4y1S7Qq
为什么使用 Playwright 进行 Web 自动化?
Playwright是微软开发的开源框架,于2020年发布。它对市场来说相对较新,但很快就流行起来。微软根据用户反馈不断更新和改进它,所以如果我们看看比 Playwright 上市时间更长的类似框架的下载量,你就可以看到它已经变得多么受欢迎。基于云的Playwright自动化测试云LambdaTest解决了上述问题。

以下是使 Playwright 成为必须尝试的框架的几个原因:
发布:Playwright团队和标准发行说明还以视频演练的形式提供他们的发行说明。我还没有在任何其他主要框架中看到过这一点,这对于深入了解产品的开发方式很有帮助。
竞争对手:您可能正在权衡从 Selenium 迁移到 Cypress 的利弊,并在社区中获得普及。Playwright 测试从竞争对手中脱颖而出,因为它凭借其直观的语法和跨多个页面和域与浏览器交互的灵活性而超越了其他 JavaScript 库。
最后,Playwright 上测试脚本的执行速度领先于其他自动化框架。ChecklyHQ 团队在对主要自动化工具进行深入的执行速度监控后创建了这份基准报告。集成:Playwright 具有本地集成功能。例如,Playwright 有 Docker 镜像,允许您在隔离和受控的环境中快速运行测试。本地集成可用于最好的 CI/CD 工具,包括 GitHub Actions、Azure Pipelines、CircleCI、Jenkins 和 GitLab。它们还支持您现有的 JavaScript 测试运行程序,例如 Jest/Jasmine、AVA 和 Mocha,如果您从现有代码库进行移植,这会很有帮助。
最后,Playwright 与 Selenium (python开源最有名的自动化测试神器)网格在线直接集成。这对于大规模运行更大的测试套件以及通过 Selenium Grid 管理并行执行至关重要。
注意:在 50 多种浏览器和操作系统组合上立即运行您的 Playwright 测试脚本。并行执行 Playwright 测试可显着减少测试执行时间。立即尝试 LambdaTest!
如何进行Playwright测试?
您可以利用 Playwright 框架提供的不同功能。然而,它的真正潜力只能通过像 LambdaTest 这样的基于云的测试平台来确定。使用 LambdaTest 测试自动化云,您可以在包含 50 多个浏览器的在线浏览器场(包括 Chrome、Chromium、Edge、Mozilla Firefox 和 Webkit)上自动执行 Playwright 测试。
您还可以并行运行 Playwright 测试脚本,并多次缩短测试执行周期。
以下是使用 LambdaTest 使 Playwright 测试变得轻而易举的一些其他功能。
-
即时访问 3000 多个真实桌面和移动环境。
-
使用 HyperExecute(端到端测试编排云)将测试执行速度提高 70%。
-
通过大规模测试减少测试不稳定、缩短工作时间并更快地获得代码更改反馈。
-
使用地理位置测试功能跨多个地理位置进行测试。
-
与您最喜爱的 CI/CD、项目管理、无代码自动化等工具进行 120 多个第三方集成。
以下是在 LambdaTest 平台上运行 Playwright 测试的步骤。
-
免费注册并登录您的 LambdaTest 帐户。
-
克隆 LambdaTest LambdaTest Playwright GitHub 存储库
-
使用 npm install 安装 NPM 依赖项。
-
在环境变量中设置您的 LambdaTest 用户名和访问密钥。您可以通过单击右上角的访问密钥按钮从 LambdaTest 自动化仪表板获取它们。
-
下面显示的是在 Bing 浏览器上搜索术语“LambdaTest”的 Playwright 测试脚本。测试在Chrome浏览器和Windows 10操作系统上运行。
const { chromium } = require('playwright')
const { expect } = require('@playwright/test');
(async () => {
const capabilities = {
'browserName': 'Chrome', // Browsers allowed: 'Chrome', 'MicrosoftEdge', 'pw-chromium', 'pw-firefox' and 'pw-webkit'
'browserVersion': 'latest',
'LT:Options': {
'platform': 'Windows 10',
'build': 'Playwright Sample Build',
'name': 'Playwright Sample Test',
'user': process.env.LT_USERNAME,
'accessKey': process.env.LT_ACCESS_KEY,
'network': true,
'video': true,
'console': true,
'tunnel': false, // Add tunnel configuration if testing locally hosted webpage
'tunnelName': '', // Optional
'geoLocation': '', // country code can be fetched from https://www.lambdatest.com/capabilities-generator/
}
}
const browser = await chromium.connect({
wsEndpoint: 'wss://cdp.lambdatest.com/playwright?capabilities=${encodeURIComponent(JSON.stringify(capabilities))}'
})
const page = await browser.newPage()
await page.goto('https://www.bing.com')
const element = await page.$('[aria-label="Enter your search term"]')
await element.click()
await element.type('LambdaTest')
await element.press('Enter')
const title = await page.title()
try {
expect(title).toEqual('LambdaTest - Search')
// Mark the test as completed or failed
await page.evaluate(_ => {}, 'lambdatest_action: ${JSON.stringify({ action: 'setTestStatus', arguments: { status: 'passed', remark: 'Title matched' } })}')
} catch {
await page.evaluate(_ => {}, 'lambdatest_action: ${JSON.stringify({ action: 'setTestStatus', arguments: { status: 'failed', remark: 'Title not matched' } })}')
}
await browser.close()
})()
-
在终端中使用命令:node playwright-single.js 来运行测试。
-
现在,访问 LambdaTest 自动化仪表板以查看您的测试结果。

您可以通过单击会话名称来查看刚刚执行的 Playwright 测试会话的详细信息。下面的屏幕截图显示了 Playwright 测试的测试执行详细信息,包括测试名称、测试 ID、所选配置、测试日志、基本信息、输入配置和测试会话视频。

Playwright测试框架的特点
以下是 Playwright 测试框架的一些独特功能:
-
该框架支持 Chromium、WebKit 和 Firefox 上的跨浏览器开发,包括 Chrome、Edge、Firefox、Opera 和 Safari。
-
Windows、Linux 和 macOS 支持跨平台执行。
-
测试跨语言,包括 JavaScript、TypeScript、Python、Java 和 .NET – 选择适合您的环境,同时仍覆盖所有领域和格式。
-
自动等待、智能断言,重试直至找到元素,并测试数据跟踪 - 轻松跟踪日志和视频。
-
该应用程序采用现代架构构建,没有任何限制,允许您像真实用户一样与多页面、多选项卡网站进行交互,并轻松处理框架和浏览器事件。
-
由于 Playwright 框架与现代浏览器的体系结构保持一致,因此它没有进程内测试运行程序的限制。
-
Playwright 提供完整的测试隔离,无需任何开销。它为每个测试创建一个浏览器上下文,只需要几毫秒的时间。

Playwright体系框架
为了了解 Playwright 的架构如何工作,我们将其工作与 Selenium 的工作进行比较。Selenium 将每个命令作为独立的 HTTP 请求发送并接收 JSON 响应。每次交互(例如打开浏览器窗口、单击元素或在输入框中输入文本)都会作为单独的 HTTP 请求发送。
这意味着我们必须等待更长时间才能得到响应,并增加了出错的机会。

Playwright 不是通过单独的 WebSocket 连接与每个驱动程序进行通信,而是依靠单个 WebSocket 连接与所有驱动程序进行通信,该连接将保持不变,直到测试完成。这允许在单个连接上快速发送命令,从而减少故障点。
Playwright 支持的浏览器
Playwright 有多种语言版本,每个版本都有不同的依赖项。在安装包时,Playwright 将为您下载这些依赖项,或者您可以使用 Playwright CLI 来安装它们。
Playwright不断更新对浏览器的支持,以便最新的Playwright随时支持最新的浏览器。因此,每次更新 Playwright 时都需要运行安装命令。
-
Chromium (84 & above)
-
Firefox (76 & above)
-
WebKit (13 & above)
-
Google Chrome (Chrome 66 & above)
-
Microsoft Edge (Edge 80 & above)
Playwright测试的缺点
以下是一些 Playwright 测试的缺点:
-
Playwright 不支持旧版 Microsoft Edge 或 IE11。
-
单个 test() 函数捕获屏幕截图、视频和故障跟踪。换句话说,如果您在 test.describe() 函数内有一些测试,您将获得每个测试的视频和跟踪,但不会获得整个根测试函数的视频和跟踪。
-
Playwright 使用桌面浏览器而不是真实设备来模拟移动设备。
-
尽管 Playwright 支持 API 测试,但其 APIRequest 方法不支持禁用跟随重定向。
-
它不支持 TeamCity 报告。您需要为 CI/CD 构建编写报告程序。
Playwright在测试创作中的作用
在使用 Web 自动化时,人们面临的常见挑战是测试执行缓慢、不可靠的等待场景、编写大量用于设置浏览器的样板代码、并行测试执行等。使用 Playwright,您可以在编写测试时克服这些挑战 更可靠、更快速、更易读。
在 Playwright 教程的这一部分中,我们将探讨 Playwright 如何使测试编写变得快速且可读。
Playwriter 的设置很简单。如果您传递命令 npm i playwright,它将下载所有三种支持的浏览器的二进制文件。因此,通过传递单个命令,您就可以为浏览器自动化做好准备。
Playwright 研究三个核心概念:浏览器、上下文和页面。
-
浏览器:要运行测试,您必须启动浏览器。使用 Playwright,您可以使用 Browser 类的对象,即 Chromium、Firefox 或 Webkit 的实例。
-
上下文:Playwright 框架使用浏览器上下文实现并行化。浏览器上下文就像浏览器实例中隔离的隐身型配置文件。
-
页面:它是浏览器上下文中的新选项卡(或弹出窗口)。测试中的每个操作都将在页面上执行。Playwright 支持三种浏览器:Chromium、Firefox 和 Webkit。因此,您可以编写一次测试,然后以零或更少的配置在所有浏览器上执行它们。Playwright 在执行操作之前会自动等待网络元素。它使测试编写变得简单,并避免了添加显式等待的额外步骤。
-
它提供自定义等待测试来等待选择器可用。同样,可以等待直到满足某些特定的网络条件。
-
Playwright 无需多次登录。它将会话详细信息(包括 cookie)存储在上下文中。因此,它可以用于该特定上下文中的所有测试。
-
Playwright 支持文本内容和可访问性标签等弹性选择器来定位 Web 元素。
Playwright的崛起
虽然 Playwright 是新进入市场的,但它已经拥有一些使其成为强大竞争对手的功能。想要从 Selenium 迁移到 Playwright 的人可以快速完成,因为 Playwright 支持 C#、Java 和 Python。程序员不受语言的限制;Playwright 于 2020 年 1 月首次发布,此后广受欢迎。
查看基于开发者满意度、兴趣、使用情况和认知度的 JS 2021 Playwright 测试数据:https://2021.stateofjs.com/en-us/libraries/testing/
满意度:
自 2020 年以来,Playwright 在开发人员和测试人员中表现出一致的满意度,即根据 2020 年和 2021 年的调查,满意度为 93%。

兴趣:
开发人员和 QA 测试人员对使用 Playwright 测试工具的兴趣也表现出一致性,即根据 2020 年和 2021 年的调查,这一比例为 70%。

使用情况:
由于 Playwright 是相对较新的测试框架,开发人员和测试人员的使用率显着增加,从 2020 年的 3% 增加到 2021 年的 10%,这表明未来几年将出现积极增长。

认知度:
Playwright 是一种新的 Web 自动化测试工具,在开发人员和测试人员社区中迅速流行。从 2020 年的 19% 上升到 2021 年的 34%,表明未来几年将出现正增长。

在 JS 2021 调查的“随时间变化的经验”部分中,还显示:


Playwright历史
浏览器自动化并不是一项新技术。Selenium 于 2004 年问世,主要用于创建网站测试套件。然而,当网站不提供 API 时,程序员也可以使用它来截取屏幕截图并自动执行任务。
然而,Selenium 因不可靠而闻名。由 Selenium 驱动的测试通常不稳定,并且常常由于难以重现的非明显原因间歇性失败。由于 Selenium 在渲染整个网页时占用大量资源,程序员开始使用无头浏览器。这些浏览器执行与常规浏览器相同的功能,但实际上不显示任何内容。PhantomJS 是最流行的之一。
尽管无头浏览器可用于测试更简单的网站,但它们无法测试网站可以执行的所有操作。为了测试完整浏览器的所有功能,无头浏览器必须尽可能地模拟完整浏览器。由于现代浏览器非常复杂,这可能非常困难。
2017 年,浏览器自动化的格局发生了巨大变化。PhantomJS 是一种流行的无头测试框架,已被弃用。此举的原因是谷歌宣布推出无头 Chrome,该功能首次在 Chrome 59 中提供。Firefox 于当年晚些时候推出了无头模式。这些发展带来了更高效的测试和脚本,因此 Playwright 诞生了。
Playwright vs Puppeteer:详细比较
Microsoft 的 Microsoft Playwright 最初是 Puppeteer 的一个分支。对于那些不知道的人来说,Puppeteer 是一个节点库,它允许在 JavaScript 的帮助下实现基于 Chromium 的浏览器的自动化。
微软的 如果你查了一下,Puppeteer 的前两名贡献者现在都在 Playwright 工作。Puppeteer 团队实质上从 Google 转移到了 Microsoft,并成为 Playwright 团队。因此,Playwright 在很多方面与 Puppeteer 非常相似。默认情况下,这两个包都使用相同的 API 方法并捆绑兼容的浏览器。
Playwright 最大的区别点是它的跨浏览器兼容性。它可以驱动 Chromium、WebKit(Safari 的浏览器引擎)和 Firefox。除此之外,建立一个新的库使 Playwright 能够以打破 Puppeteer 的方式改进人体工程学。例如,Playwright 的 page.click 默认情况下等待元素可见。虽然 Puppeteer 仍然可以改进,但 Playwright 在某些情况下更有用。
最后一个值得注意的区别是 Playwright 自动化平台提供了更强大的浏览器上下文功能,使您能够使用单个实例模拟多个设备。每个浏览器上下文下面可以有多个页面,并且每个上下文在 cookie 和本地存储方面都与其他上下文隔离。
相比之下,Puppeteer 测试可以轻松开始浏览器自动化。这部分是因为它易于使用,因为它使用非标准 DevTools 协议控制 Chrome,让您轻松拦截网络请求并通过 Selenium 提供附加功能。
Playwright学习资源
通过我们详细的博客和视频教程运行您的第一个 Playwright 测试:使用文档链接https://www.lambdatest.com/playwright,内容包括:
-
如何设置Playwright测试自动化框架?
-
如何使用函数和选择器?
-
Playwright测试功能
-
如何处理输入和按钮?
-
如何处理警报和下拉菜单?
-
如何处理框架和窗口?
-
如何自动化日期选择器?
-
如何上传和下载文件?
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。




1364

被折叠的 条评论
为什么被折叠?



