利用 Playwright 提供的 API,我们在浏览器上做的很多事情都可以自动化。例如,搜索数据、填写表单和下载文件等等。
但最适合的工作,就是自动化测试 Web 应用程序。
自动化测试
测试是软件开发中的一项基本任务,至少,你需要运行应用程序以查看它是否按预期工作。
但是要真正测试一个功能是否正常,需要要覆盖尽可能多的场景。例如,填写一个表单,你就必须要验证如下常见的场景:
完全正确的数据
错误的数据类型,比如数字框输入了字母
错误的数据范围,比如年龄输入了1000
必填字段为空
虽然可以用纯手工进行测试。但是有经验的开发人员会基于这些场景编写测试代码,并且可以自动化运行这些测试代码,保证不会遗漏任何场景或必须重复执行相同的测试。
而测试 Web 应用程序需要使用浏览器,这正给了 Playwright 以用武之地。
测试框架
虽然 Playwright for .NET 不依赖于特定的测试运行程序或测试框架就可运行,但是利用测试框架可以帮助我们更好地编写自动化测试。
.NET 下的测试框架有很多。但是官方推荐使用 NUnit 作为测试框架。你也可以尝试使用其他你熟悉的测试框架。
Demo
下面我们将将使用站点 https://www.baidu.com 作为测试用例,测试页面标题是否为“百度一下,你就知道”。
在命令行窗口,使用 dotnet CLI 创建一个 NUnit 测试项目,并添加 Playwright 依赖:
dotnet new nunit -n HelloPlaywright_04
cd HelloPlaywright_04
dotnet add package Microsoft.Playwright.NUnit
修改 UnitTest1.cs 代码如下:
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
using System.Threading.Tasks;
namespace HelloPlaywright_04
{
public class Tests : PageTest
{
[Test]
public async Task Title_IsCorrect()
{
var result = await Page.TitleAsync();
Assert.AreEqual("百度一下,你就知道", result);
}
}
}
运行测试,失败:
但是这是对的,因为我们还没有初始化环境:
namespace HelloPlaywright_04
{
public class Tests : PageTest
{
[SetUp]
public async Task SetUp()
{
await Page.GotoAsync("https://www.baidu.com");
}
...
}
}
运行测试,成功:
结论
Microsoft.Playwright.NUnit 提供了多个基类用于创建不同级别下的测试:
类名 | 说明 |
---|---|
PageTest | 每个测试都会获得在其自己独有的 BrowserContext 中创建的网页的新副本。扩展此类是编写全功能 Playwright 测试的最简单方法。 |
ContextTest | 每个测试都会得到一个 BrowserContext 的新副本。你可以根据需要在此上下文中创建任意数量的页面。使用此测试是测试需要多个选项卡的多页场景的最简单方法。 |
BrowserTest | 每个测试都将获得一个浏览器,并且可以创建任意数量的上下文。每个测试负责清理它创建的所有上下文。 |
PlaywrightTest | 为每个测试提供了一个 Playwright 对象,以便测试可以启动和停止任意数量的浏览器。 |
添加微信号【MyIO666】,邀你加入技术交流群