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(名称)
Added in: 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自定义)完全覆盖其边界框。该遮罩也会应用于不可见元素,如需禁用此功能,请参阅Matching only visible elements。 -
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(选项)
Added in: v1.23此函数将等待直到连续两次页面截图结果相同,然后将最后一张截图与预期结果进行比较。
用法
await expect(page).toHaveScreenshot();
请注意,截图断言仅适用于Playwright测试运行器。
参数
options
Object (optional)-
animations
"disabled" | "allow" (可选)#当设置为
"disabled"
时,会停止CSS动画、CSS过渡和Web动画。动画会根据其持续时间受到不同的处理:- 有限动画会被快进到完成状态,因此会触发
transitionend
事件。 - 无限循环动画会被取消回到初始状态,截图完成后会重新播放。
默认为
"disabled"
表示禁用动画。 - 有限动画会被快进到完成状态,因此会触发
-
caret
"hide" | "initial" (可选)#当设置为
"hide"
时,截图将隐藏文本光标。当设置为"initial"
时,文本光标行为将保持不变。默认为"hide"
。 -
一个指定结果图像裁剪范围的对象。
-
当设置为true时,会截取整个可滚动页面的截图,而不是当前可见的视口区域。默认为
false
。 -
指定在截图时应被遮罩的定位器。被遮罩的元素将被一个粉红色盒子
#FF00FF
(可通过maskColor自定义)完全覆盖其边界框。该遮罩也会应用于不可见元素,如需禁用此功能,请参阅Matching only visible elements。 -
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
Added in: v1.20确保页面具有给定的标题。
用法
await expect(page).toHaveTitle(/.*checkout/);
参数
返回
toHaveURL
Added in: v1.20确保页面导航到给定的URL。
用法
// Check for the page URL to be 'https://playwright.dev/docs/intro' (including query string)
await expect(page).toHaveURL('https://playwright.dev/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
值。
-
返回
属性
不
Added in: v1.20使断言检查相反的条件。例如,以下代码测试页面URL不包含"error"
:
await expect(page).not.toHaveURL('error');
用法
expect(page).not
类型