跳转到主要内容

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 pageAssertions.toHaveScreenshot(name)

此函数将等待直到连续两次页面截图产生相同的结果,然后将最后一次截图与预期进行比较。

用法

await expect(page).toHaveScreenshot('image.png');

请注意,截图断言仅适用于 Playwright 测试运行器。

参数

  • name string | Array<string>#

    快照名称。

  • options Object (可选)

    • animations "disabled" | "allow" (optional)#

      设置为 "disabled" 时,停止 CSS 动画、CSS 过渡和 Web 动画。动画的处理方式因其持续时间而异

      • 有限动画会快进到完成,因此它们会触发 transitionend 事件。
      • 无限动画会取消到初始状态,然后在截图后重新播放。

      默认为 "disabled",禁用动画。

    • caret "hide" | "initial" (optional)#

      设置为 "hide" 时,截图将隐藏文本插入符号。设置为 "initial" 时,文本插入符号行为不会更改。默认为 "hide"

    • clip Object (optional)#

      • x 数字

        裁剪区域左上角的 x 坐标

      • y 数字

        裁剪区域左上角的 y 坐标

      • width number

        裁剪区域的宽度

      • height number

        裁剪区域的高度

      一个指定结果图像裁剪的对象。

    • fullPage boolean (optional)#

      当为 true 时,截取整个可滚动页面的截图,而不是当前可见的视口。默认为 false

    • mask Array<Locator> (optional)#

      指定在截取屏幕截图时应被遮盖的定位器。被遮盖的元素将用粉色框 #FF00FF(由 maskColor 自定义)覆盖其整个边界框。遮罩也会应用于不可见元素,请参阅 仅匹配可见元素 以禁用此功能。

    • maskColor 字符串 (可选)添加于:v1.35#

      指定遮盖元素的覆盖框颜色,采用 CSS 颜色格式。默认颜色为粉红色 #FF00FF

    • maxDiffPixelRatio number (optional)#

      像素差异与总像素量的可接受比率,介于 01 之间。默认可通过 TestConfig.expect 配置。默认未设置。

    • maxDiffPixels number (optional)#

      可接受的像素差异数量。默认可通过 TestConfig.expect 配置。默认未设置。

    • omitBackground boolean (optional)#

      隐藏默认的白色背景并允许捕获透明截图。不适用于 jpeg 图像。默认为 false

    • scale "css" | "device" (optional)#

      设置为 "css" 时,截屏将具有页面上每个 CSS 像素的单个像素。对于高 DPI 设备,这将保持截屏较小。使用 "device" 选项将产生每个设备像素的单个像素,因此高 DPI 设备的截屏将大两倍或更大。

      默认为 "css"

    • stylePath string | Array<string> (optional)新增于: v1.41#

      包含应用于截图时的样式表的文件名。您可以在此处隐藏动态元素、使元素不可见或更改其属性,以帮助您创建可重复的屏幕截图。此样式表会穿透 Shadow DOM 并应用于内部框架。

    • threshold number (optional)#

      在比较的图像中,相同像素之间在 YIQ 颜色空间 中可接受的感知颜色差异,范围从零(严格)到一(宽松),默认值可通过 TestConfig.expect 配置。默认为 0.2

    • timeout number (optional)#

      重试断言的时间(以毫秒为单位)。默认为 TestConfig.expect 中的 timeout

返回


toHaveScreenshot(options)

添加于:v1.23 pageAssertions.toHaveScreenshot(options)

此函数将等待直到连续两次页面截图产生相同的结果,然后将最后一次截图与预期进行比较。

用法

await expect(page).toHaveScreenshot();

请注意,截图断言仅适用于 Playwright 测试运行器。

参数

  • options Object (可选)
    • animations "disabled" | "allow" (optional)#

      设置为 "disabled" 时,停止 CSS 动画、CSS 过渡和 Web 动画。动画的处理方式因其持续时间而异

      • 有限动画会快进到完成,因此它们会触发 transitionend 事件。
      • 无限动画会取消到初始状态,然后在截图后重新播放。

      默认为 "disabled",禁用动画。

    • caret "hide" | "initial" (optional)#

      设置为 "hide" 时,截图将隐藏文本插入符号。设置为 "initial" 时,文本插入符号行为不会更改。默认为 "hide"

    • clip Object (optional)#

      • x 数字

        裁剪区域左上角的 x 坐标

      • y 数字

        裁剪区域左上角的 y 坐标

      • width number

        裁剪区域的宽度

      • height number

        裁剪区域的高度

      一个指定结果图像裁剪的对象。

    • fullPage boolean (optional)#

      当为 true 时,截取整个可滚动页面的截图,而不是当前可见的视口。默认为 false

    • mask Array<Locator> (optional)#

      指定在截取屏幕截图时应被遮盖的定位器。被遮盖的元素将用粉色框 #FF00FF(由 maskColor 自定义)覆盖其整个边界框。遮罩也会应用于不可见元素,请参阅 仅匹配可见元素 以禁用此功能。

    • maskColor 字符串 (可选)添加于:v1.35#

      指定遮盖元素的覆盖框颜色,采用 CSS 颜色格式。默认颜色为粉红色 #FF00FF

    • maxDiffPixelRatio number (optional)#

      像素差异与总像素量的可接受比率,介于 01 之间。默认可通过 TestConfig.expect 配置。默认未设置。

    • maxDiffPixels number (optional)#

      可接受的像素差异数量。默认可通过 TestConfig.expect 配置。默认未设置。

    • omitBackground boolean (optional)#

      隐藏默认的白色背景并允许捕获透明截图。不适用于 jpeg 图像。默认为 false

    • scale "css" | "device" (optional)#

      设置为 "css" 时,截屏将具有页面上每个 CSS 像素的单个像素。对于高 DPI 设备,这将保持截屏较小。使用 "device" 选项将产生每个设备像素的单个像素,因此高 DPI 设备的截屏将大两倍或更大。

      默认为 "css"

    • stylePath string | Array<string> (optional)新增于: v1.41#

      包含应用于截图时的样式表的文件名。您可以在此处隐藏动态元素、使元素不可见或更改其属性,以帮助您创建可重复的屏幕截图。此样式表会穿透 Shadow DOM 并应用于内部框架。

    • threshold number (optional)#

      在比较的图像中,相同像素之间在 YIQ 颜色空间 中可接受的感知颜色差异,范围从零(严格)到一(宽松),默认值可通过 TestConfig.expect 配置。默认为 0.2

    • timeout number (optional)#

      重试断言的时间(以毫秒为单位)。默认为 TestConfig.expect 中的 timeout

返回


toHaveTitle

新增于: v1.20 pageAssertions.toHaveTitle

确保页面具有给定的标题。

用法

await expect(page).toHaveTitle(/.*checkout/);

参数

  • titleOrRegExp string | RegExp新增于: v1.18#

    预期的标题或正则表达式。

  • options Object (可选)

    • timeout 数字 (可选)新增于: v1.18#

      重试断言的时间(以毫秒为单位)。默认为 TestConfig.expect 中的 timeout

返回


toHaveURL

新增于: v1.20 pageAssertions.toHaveURL

确保页面已导航到给定的 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 字符串、RegExp 或接收 URL 并返回 boolean 的谓词。当通过上下文选项提供了 baseURL 并且 url 参数是字符串时,这两个值通过 new URL() 构造函数合并,并用于与当前浏览器 URL 进行比较。

  • options Object (可选)

    • ignoreCase boolean (optional)新增于:v1.44#

      是否执行不区分大小写的匹配。如果指定,ignoreCase 选项会覆盖相应的正则表达式参数。提供的谓词会忽略此标志。

    • timeout 数字 (可选)新增于: v1.18#

      重试断言的时间(以毫秒为单位)。默认为 TestConfig.expect 中的 timeout

返回


属性

not

新增于: v1.20 pageAssertions.not

使断言检查相反的条件。例如,此代码测试页面 URL 不包含 "error"

await expect(page).not.toHaveURL('error');

用法

expect(page).not

类型