Playwright学习:怎么正确使用断言?

前言

Playwright中,断言是一个非常重要的角色,它可以帮助我们验证页面行为是否符合预期。但是,官方文档中提供的断言API很多,分类也不明确,对于新手来说,根本没办法记住所有。

所以,本文中,我将带着大家一起,系统的学习Playwright断言API,帮你快速记住。

断言API

Playwright中提供的断言API很多,但是大致可以分为 基本断言、定位器断言、页面断言、接口类断言等,我们来一个个看下。

基本断言

这些是最基础的断言,通常用于验证元素、页面状态等是否符合预期。

相等:

scss 复制代码
比较原始类型(如数字、字符串、布尔值),使用 === 运算符进行比较
expect(1).toBe(1); // Passes

比较对象或数组(包括嵌套的属性或元素), 递归地比较对象或数组的每个值
expect({ foo: "bar" }).toEqual({ foo: "bar" }); // Passes

不相等: 在匹配器前面添加 .not,我们可以预期相反的情况成立:

scss 复制代码
expect(value).not.toEqual(0);  
await expect(locator).not.toContainText('some text');

包含:

scss 复制代码
expect(value).toContain()

模式匹配:

scss 复制代码
// 匹配类/基础类型的任何实例
expect(value).any()  
// 匹配任何东西
expect(value).anything()  
// 数组包含特定元素
expect(value).arrayContaining() 
// 数量大致相等
expect(value).closeTo()  
// 对象包含特定属性
expect(value).objectContaining()  
// 字符串包含子字符串
expect(value).stringContaining()  
// 字符串与正则表达式匹配
expect(value).stringMatching() 
// 字符串与正则表达式匹配
expect(value).toMatch()  
// 对象包含指定的属性
expect(value).toMatchObject()

定位器断言

这些断言主要集中在定位器上,验证元素的状态、属性、样式等与定位器相关的行为。

可见性:

scss 复制代码
// 元素可见
expect(element).toBeVisible();
// 元素不可见
expect(element).toBeHidden();
// 元素在视图中
expect(element).toBeInViewport(); 

状态变化:

scss 复制代码
// 复选框被选中
await expect(locator).toBeChecked();
// 元素已聚焦
await expect(locator).toBeFocused()
// 容器是空的
await expect(locator).toBeEmpty();
// 元素已启用
await expect(locator).toBeEnabled(); //可点

元素内容:

scss 复制代码
// 元素包含文本
await expect(locator).toContainText(/\d messages/);
// 元素与文本匹配
await expect(locator).toHaveText(/Welcome/);
// 输入有一个值
await expect(locator).toHaveValue(/[0-9]/);
// 元素有一个 ID
await expect(locator).toHaveId('lastname');
// 元素具有类属性
await expect(locator).toHaveClass(/selected/);

页面断言

这些断言主要用于验证页面本身的状态,关注整个页面的行为和外观。

scss 复制代码
// 页面有一个 URL
await expect(page).toHaveURL()
// 页面有标题 
await expect(page).toHaveTitle()
// 页面有截图
await expect(page).toHaveScreenshot()

接口断言

这些断言关注页面或应用程序与外部服务的交互,主要用于验证 HTTP 请求的响应。

scss 复制代码
await expect(response).toBeOK();
await expect(response).not.toBeOK();

软断言

以上的断言API,在失败的时候,会导致测试终止执行,所以 Playwright还支持软断言:失败的软断言不会终止测试执行,而是将测试标记为失败。

软断言的使用也很简单,就像这样,使用 .soft

csharp 复制代码
await expect.soft(page.getByTestId('status')).toHaveText('Success');

以上就是 playwright中关于断言的API了,大家可以在实际开发过程中,选择合适的断言API,提高测试的质量和效率,确保你的应用程序的稳定性和可靠性。

相关推荐
0思必得026 分钟前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5161 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino1 小时前
图片、文件的预览
前端·javascript
layman05283 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔3 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李3 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN3 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒3 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库3 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052473 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫