PageAssertions
PageAssertions 类提供了断言方法,可以用于对测试中的 Page 状态进行断言。
import { test, expect } from '@playwright/test';
test('navigates to login', async ({ page }) => {
// ...
await page.getByText('Sign in').click();
await expect(page).toHaveURL(/.*\/login/);
});
方法
toHaveScreenshot(name)
添加于: v1.23此函数将等待直到两个连续的页面屏幕截图产生相同的结果,然后将最后一个屏幕截图与期望值进行比较。
用法
await expect(page).toHaveScreenshot('image.png');
请注意,屏幕截图断言仅适用于 Playwright 测试运行器。
参数
-
快照名称。
-
options
Object (可选)-
animations
"disabled" | "allow" (可选)#当设置为
"disabled"
时,停止 CSS 动画、CSS 过渡和 Web 动画。动画根据其持续时间获得不同的处理- 有限的动画会快进到完成,因此它们会触发
transitionend
事件。 - 无限动画将被取消到初始状态,然后在屏幕截图后重新播放。
默认为
"disabled"
,禁用动画。 - 有限的动画会快进到完成,因此它们会触发
-
caret
"hide" | "initial" (可选)#当设置为
"hide"
时,屏幕截图将隐藏文本光标。当设置为"initial"
时,文本光标行为将不会更改。默认为"hide"
。 -
一个对象,用于指定结果图像的裁剪。
-
当为 true 时,拍摄整个可滚动页面的屏幕截图,而不是当前可见的视口。默认为
false
。 -
指定在拍摄屏幕截图时应屏蔽的定位器。屏蔽的元素将以粉红色框
#FF00FF
(由 maskColor 自定义)覆盖,该框完全覆盖其边界框。 蒙版也适用于不可见元素,请参阅仅匹配可见元素以禁用该功能。 -
maskColor
string (可选)添加于: v1.35#指定屏蔽元素的覆盖框的颜色,以 CSS 颜色格式 表示。默认颜色为粉红色
#FF00FF
。 -
maxDiffPixelRatio
number (可选)#像素差异与像素总量的可接受比率,介于
0
和1
之间。默认值可通过TestConfig.expect
配置。默认未设置。 -
可能不同的像素的可接受数量。默认值可通过
TestConfig.expect
配置。默认未设置。 -
隐藏默认白色背景并允许捕获具有透明度的屏幕截图。不适用于
jpeg
图像。默认为false
。 -
scale
"css" | "device" (可选)#当设置为
"css"
时,屏幕截图的每个 css 像素将有一个像素。对于高 dpi 设备,这将使屏幕截图保持较小。使用"device"
选项将为每个设备像素生成一个像素,因此高 dpi 设备的屏幕截图将大两倍甚至更大。默认为
"css"
。 -
stylePath
string | Array<string> (可选)添加于: v1.41#包含在制作屏幕截图时应用的样式表的文件名。您可以在此处隐藏动态元素、使元素不可见或更改其属性,以帮助您创建可重复的屏幕截图。此样式表会穿透 Shadow DOM 并应用于内部框架。
-
在比较图像中相同像素之间,YIQ 颜色空间中可接受的感知颜色差异,介于零(严格)和一(宽松)之间,默认值可通过
TestConfig.expect
配置。默认为0.2
。 -
重试断言的时间(以毫秒为单位)。默认为
TestConfig.expect
中的timeout
。
-
返回值
toHaveScreenshot(options)
添加于: v1.23此函数将等待直到两个连续的页面屏幕截图产生相同的结果,然后将最后一个屏幕截图与期望值进行比较。
用法
await expect(page).toHaveScreenshot();
请注意,屏幕截图断言仅适用于 Playwright 测试运行器。
参数
options
Object (可选)-
animations
"disabled" | "allow" (可选)#当设置为
"disabled"
时,停止 CSS 动画、CSS 过渡和 Web 动画。动画根据其持续时间获得不同的处理- 有限的动画会快进到完成,因此它们会触发
transitionend
事件。 - 无限动画将被取消到初始状态,然后在屏幕截图后重新播放。
默认为
"disabled"
,禁用动画。 - 有限的动画会快进到完成,因此它们会触发
-
caret
"hide" | "initial" (可选)#当设置为
"hide"
时,屏幕截图将隐藏文本光标。当设置为"initial"
时,文本光标行为将不会更改。默认为"hide"
。 -
一个对象,用于指定结果图像的裁剪。
-
当为 true 时,拍摄整个可滚动页面的屏幕截图,而不是当前可见的视口。默认为
false
。 -
指定在拍摄屏幕截图时应屏蔽的定位器。屏蔽的元素将以粉红色框
#FF00FF
(由 maskColor 自定义)覆盖,该框完全覆盖其边界框。 蒙版也适用于不可见元素,请参阅仅匹配可见元素以禁用该功能。 -
maskColor
string (可选)添加于: v1.35#指定屏蔽元素的覆盖框的颜色,以 CSS 颜色格式 表示。默认颜色为粉红色
#FF00FF
。 -
maxDiffPixelRatio
number (可选)#像素差异与像素总量的可接受比率,介于
0
和1
之间。默认值可通过TestConfig.expect
配置。默认未设置。 -
可能不同的像素的可接受数量。默认值可通过
TestConfig.expect
配置。默认未设置。 -
隐藏默认白色背景并允许捕获具有透明度的屏幕截图。不适用于
jpeg
图像。默认为false
。 -
scale
"css" | "device" (可选)#当设置为
"css"
时,屏幕截图的每个 css 像素将有一个像素。对于高 dpi 设备,这将使屏幕截图保持较小。使用"device"
选项将为每个设备像素生成一个像素,因此高 dpi 设备的屏幕截图将大两倍甚至更大。默认为
"css"
。 -
stylePath
string | Array<string> (可选)添加于: v1.41#包含在制作屏幕截图时应用的样式表的文件名。您可以在此处隐藏动态元素、使元素不可见或更改其属性,以帮助您创建可重复的屏幕截图。此样式表会穿透 Shadow DOM 并应用于内部框架。
-
在比较图像中相同像素之间,YIQ 颜色空间中可接受的感知颜色差异,介于零(严格)和一(宽松)之间,默认值可通过
TestConfig.expect
配置。默认为0.2
。 -
重试断言的时间(以毫秒为单位)。默认为
TestConfig.expect
中的timeout
。
-
返回值
toHaveTitle
添加于: v1.20确保页面具有给定的标题。
用法
await expect(page).toHaveTitle(/.*checkout/);
参数
返回值
toHaveURL
添加于: v1.20确保页面已导航到给定的 URL。
用法
// Check for the page URL to be 'https://playwright.net.cn/docs/intro' (including query string)
await expect(page).toHaveURL('https://playwright.net.cn/docs/intro');
// Check for the page URL to contain 'doc', followed by an optional 's', followed by '/'
await expect(page).toHaveURL(/docs?\//);
// Check for the predicate to be satisfied
// For example: verify query strings
await expect(page).toHaveURL(url => {
const params = url.searchParams;
return params.has('search') && params.has('options') && params.get('id') === '5';
});
参数
-
url
string | RegExp | function(URL):boolean添加于: v1.18#期望的 URL 字符串、正则表达式或谓词,用于接收 URL 以进行匹配。当通过上下文选项提供 baseURL 并且
url
参数是字符串时,这两个值将通过new URL()
构造函数合并,并用于与当前浏览器 URL 进行比较。 -
options
Object (可选)-
ignoreCase
boolean (可选)添加于: v1.44#是否执行不区分大小写的匹配。ignoreCase 选项优先于相应的正则表达式参数(如果已指定)。提供的谓词将忽略此标志。
-
timeout
number (可选)添加于: v1.18#重试断言的时间(以毫秒为单位)。默认为
TestConfig.expect
中的timeout
。
-
返回值
属性
not
添加于: v1.20使断言检查相反的条件。例如,此代码测试页面 URL 不包含 "error"
await expect(page).not.toHaveURL('error');
用法
expect(page).not
类型