跳转到主要内容

LocatorAssertions

定位器断言 (LocatorAssertions) 类提供了断言方法,可用于在测试中对定位器 (Locator) 状态进行断言。

import { test, expect } from '@playwright/test';

test('status becomes submitted', async ({ page }) => {
// ...
await page.getByRole('button').click();
await expect(page.locator('.status')).toHaveText('Submitted');
});

方法

toBeAttached

新增于:v1.33 locatorAssertions.toBeAttached

确保定位器指向的元素已连接到文档或 ShadowRoot。

用法

await expect(page.getByText('Hidden text')).toBeAttached();

参数

  • options Object (可选)
    • attached 布尔值 (可选)#

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeChecked

新增于: v1.20 locatorAssertions.toBeChecked

确保定位器指向一个被勾选的输入框。

用法

const locator = page.getByLabel('Subscribe to newsletter');
await expect(locator).toBeChecked();

参数

  • options Object (可选)
    • checked 布尔值 (可选)新增于: v1.18#

      提供要断言的状态。默认断言输入框为选中状态。当indeterminate设置为 true 时,此选项不能使用。

    • indeterminate 布尔值 (可选)新增于: v1.50#

      断言元素处于不确定(混合)状态。仅支持复选框和单选按钮。当提供了checked时,此选项不能为 true。

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeDisabled

新增于: v1.20 locatorAssertions.toBeDisabled

确保定位器指向一个禁用元素。如果元素具有“disabled”属性或通过“aria-disabled”禁用,则该元素被禁用。请注意,只有原生控制元素(例如 HTML buttoninputselecttextareaoptionoptgroup)可以通过设置“disabled”属性禁用。“disabled”属性在其他元素上被浏览器忽略。

用法

const locator = page.locator('button.submit');
await expect(locator).toBeDisabled();

参数

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeEditable

新增于: v1.20 locatorAssertions.toBeEditable

确保定位器指向一个可编辑元素。

用法

const locator = page.getByRole('textbox');
await expect(locator).toBeEditable();

参数

  • options Object (可选)
    • editable 布尔值 (可选)新增于: v1.26#

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeEmpty

新增于: v1.20 locatorAssertions.toBeEmpty

确保定位器指向一个空的、可编辑的元素,或者一个不含文本的 DOM 节点。

用法

const locator = page.locator('div.warning');
await expect(locator).toBeEmpty();

参数

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeEnabled

新增于: v1.20 locatorAssertions.toBeEnabled

确保定位器指向一个启用的元素。

用法

const locator = page.locator('button.submit');
await expect(locator).toBeEnabled();

参数

  • options Object (可选)
    • enabled 布尔值 (可选)新增于: v1.26#

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeFocused

新增于: v1.20 locatorAssertions.toBeFocused

确保定位器指向一个获取焦点的 DOM 节点。

用法

const locator = page.getByRole('textbox');
await expect(locator).toBeFocused();

参数

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeHidden

新增于: v1.20 locatorAssertions.toBeHidden

确保定位器不解析为任何 DOM 节点,或者解析为不可见的 DOM 节点。

用法

const locator = page.locator('.my-element');
await expect(locator).toBeHidden();

参数

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeInViewport

添加于:v1.31 locatorAssertions.toBeInViewport

根据Intersection Observer API,确保定位器指向一个与视口相交的元素。

用法

const locator = page.getByRole('button');
// Make sure at least some part of element intersects viewport.
await expect(locator).toBeInViewport();
// Make sure element is fully outside of viewport.
await expect(locator).not.toBeInViewport();
// Make sure that at least half of the element intersects viewport.
await expect(locator).toBeInViewport({ ratio: 0.5 });

参数

  • options Object (可选)
    • ratio 数字 (可选)#

      元素与视口相交的最小比率。如果等于 0,则元素应以任何正比率与视口相交。默认为 0

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toBeVisible

新增于: v1.20 locatorAssertions.toBeVisible

确保定位器指向一个已连接且可见的 DOM 节点。

要检查列表中至少一个元素是否可见,请使用locator.first()

用法

// A specific element is visible.
await expect(page.getByText('Welcome')).toBeVisible();

// At least one item in the list is visible.
await expect(page.getByTestId('todo-item').first()).toBeVisible();

// At least one of the two elements is visible, possibly both.
await expect(
page.getByRole('button', { name: 'Sign in' })
.or(page.getByRole('button', { name: 'Sign up' }))
.first()
).toBeVisible();

参数

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

    • visible 布尔值 (可选)新增于: v1.26#

返回


toContainClass

添加于: v1.52 locatorAssertions.toContainClass

确保定位器指向的元素具有给定的 CSS 类。所有来自断言值(以空格分隔)的类都必须以任何顺序存在于Element.classList中。

用法

<div class='middle selected row' id='component'></div>
const locator = page.locator('#component');
await expect(locator).toContainClass('middle selected row');
await expect(locator).toContainClass('selected');
await expect(locator).toContainClass('row middle');

当传入数组时,该方法断言定位的元素列表与相应的预期类列表匹配。每个元素的 class 属性都与数组中相应的类进行匹配。

<div class='list'>
<div class='component inactive'></div>
<div class='component active'></div>
<div class='component inactive'></div>
</div>
const locator = page.locator('.list > .component');
await expect(locator).toContainClass(['inactive', 'active', 'inactive']);

参数

  • expected 字符串 | 数组<字符串>#

    一个包含预期类名(以空格分隔)的字符串,或一个此类字符串的列表,用于断言多个元素。

  • options Object (可选)

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toContainText

新增于: v1.20 locatorAssertions.toContainText

确保定位器指向的元素包含给定的文本。计算元素的文本内容时将考虑所有嵌套元素。您也可以使用正则表达式作为值。

用法

const locator = page.locator('.title');
await expect(locator).toContainText('substring');
await expect(locator).toContainText(/\d messages/);

如果您将数组作为预期值传入,则预期结果是

  1. 定位器解析为元素列表。
  2. 此列表的**子集**中的元素分别包含预期数组中的文本。
  3. 匹配的元素子集与预期数组具有相同的顺序。
  4. 预期数组中的每个文本值都由列表中的某个元素匹配。

例如,考虑以下列表

<ul>
<li>Item Text 1</li>
<li>Item Text 2</li>
<li>Item Text 3</li>
</ul>

我们来看看如何使用断言

// ✓ Contains the right items in the right order
await expect(page.locator('ul > li')).toContainText(['Text 1', 'Text 3']);

// ✖ Wrong order
await expect(page.locator('ul > li')).toContainText(['Text 3', 'Text 2']);

// ✖ No item contains this text
await expect(page.locator('ul > li')).toContainText(['Some 33']);

// ✖ Locator points to the outer list element, not to the list items
await expect(page.locator('ul')).toContainText(['Text 3']);

参数

  • expected 字符串 | 正则表达式 | 数组<字符串 | 正则表达式>新增于: v1.18#

    预期的子字符串或正则表达式或这些的列表。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)添加于:v1.23#

      是否执行不区分大小写的匹配。ignoreCase选项优先于相应的正则表达式标志(如果已指定)。

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

    • useInnerText 布尔值 (可选)新增于: v1.18#

      检索 DOM 节点文本时,是否使用 element.innerText 而不是 element.textContent

返回

详情

expected 参数是一个字符串时,Playwright 会在匹配之前将实际文本和预期字符串中的空格和换行符规范化。当使用正则表达式时,实际文本按原样匹配。


toHaveAccessibleDescription

新增于:v1.44 locatorAssertions.toHaveAccessibleDescription

确保定位器指向具有给定可访问描述的元素。

用法

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleDescription('Save results to disk');

参数

  • description 字符串 | 正则表达式#

    预期的可访问描述。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)#

      是否执行不区分大小写的匹配。ignoreCase 选项优先于相应的正则表达式标志(如果已指定)。

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveAccessibleErrorMessage

新增于: v1.50 locatorAssertions.toHaveAccessibleErrorMessage

确保定位器指向具有给定ARIA 错误消息的元素。

用法

const locator = page.getByTestId('username-input');
await expect(locator).toHaveAccessibleErrorMessage('Username is required.');

参数

  • errorMessage 字符串 | 正则表达式#

    预期的可访问错误消息。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)#

      是否执行不区分大小写的匹配。ignoreCase 选项优先于相应的正则表达式标志(如果已指定)。

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveAccessibleName

新增于:v1.44 locatorAssertions.toHaveAccessibleName

确保定位器指向具有给定可访问名称的元素。

用法

const locator = page.getByTestId('save-button');
await expect(locator).toHaveAccessibleName('Save to disk');

参数

  • name 字符串 | 正则表达式#

    预期的可访问名称。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)#

      是否执行不区分大小写的匹配。ignoreCase 选项优先于相应的正则表达式标志(如果已指定)。

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveAttribute(name, value)

新增于: v1.20 locatorAssertions.toHaveAttribute(name, value)

确保定位器指向具有给定属性的元素。

用法

const locator = page.locator('input');
await expect(locator).toHaveAttribute('type', 'text');

参数

  • name string新增于: v1.18#

    属性名。

  • value 字符串 | 正则表达式新增于: v1.18#

    预期属性值。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)添加于:v1.40#

      是否执行不区分大小写的匹配。ignoreCase选项优先于相应的正则表达式标志(如果已指定)。

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveAttribute(name)

新增于:v1.39 locatorAssertions.toHaveAttribute(name)

确保定位器指向具有给定属性的元素。该方法将断言属性存在。

const locator = page.locator('input');
// Assert attribute existence.
await expect(locator).toHaveAttribute('disabled');
await expect(locator).not.toHaveAttribute('open');

用法

await expect(locator).toHaveAttribute(name);
await expect(locator).toHaveAttribute(name, options);

参数

  • name 字符串#

    属性名。

  • options Object (可选)

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveClass

新增于: v1.20 locatorAssertions.toHaveClass

确保定位器指向的元素具有给定的 CSS 类。当提供字符串时,它必须完全匹配元素的 class 属性。要匹配单个类,请使用 expect(locator).toContainClass()

用法

<div class='middle selected row' id='component'></div>
const locator = page.locator('#component');
await expect(locator).toHaveClass('middle selected row');
await expect(locator).toHaveClass(/(^|\s)selected(\s|$)/);

当传入一个数组时,该方法断言定位的元素列表与相应的预期类值列表匹配。每个元素的 class 属性都与数组中相应的字符串或正则表达式进行匹配

const locator = page.locator('.list > .component');
await expect(locator).toHaveClass(['component', 'component selected', 'component']);

参数

返回


toHaveCount

新增于: v1.20 locatorAssertions.toHaveCount

确保定位器解析为精确数量的 DOM 节点。

用法

const list = page.locator('list > .component');
await expect(list).toHaveCount(3);

参数

  • count 数字新增于: v1.18#

    预期计数。

  • options Object (可选)

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveCSS

新增于: v1.20 locatorAssertions.toHaveCSS

确保定位器解析为具有给定计算 CSS 样式的元素。

用法

const locator = page.getByRole('button');
await expect(locator).toHaveCSS('display', 'flex');

参数

  • name string新增于: v1.18#

    CSS 属性名称。

  • value 字符串 | 正则表达式新增于: v1.18#

    CSS 属性值。

  • options Object (可选)

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveId

新增于: v1.20 locatorAssertions.toHaveId

确保定位器指向具有给定 DOM 节点 ID 的元素。

用法

const locator = page.getByRole('textbox');
await expect(locator).toHaveId('lastname');

参数

  • id 字符串 | 正则表达式新增于: v1.18#

    元素 ID。

  • options Object (可选)

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveJSProperty

新增于: v1.20 locatorAssertions.toHaveJSProperty

确保定位器指向具有给定 JavaScript 属性的元素。请注意,此属性可以是原始类型,也可以是普通的可序列化 JavaScript 对象。

用法

const locator = page.locator('.component');
await expect(locator).toHaveJSProperty('loaded', true);

参数

  • name string新增于: v1.18#

    属性名称。

  • value 对象新增于: v1.18#

    属性值。

  • options Object (可选)

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveRole

新增于:v1.44 locatorAssertions.toHaveRole

确保定位器指向具有给定ARIA 角色的元素。

请注意,角色以字符串形式匹配,不考虑 ARIA 角色层次结构。例如,对具有子类角色 "switch" 的元素断言父类角色 "checkbox" 将失败。

用法

const locator = page.getByTestId('save-button');
await expect(locator).toHaveRole('button');

参数

  • role "alert" | "alertdialog" | "application" | "article" | "banner" | "blockquote" | "button" | "caption" | "cell" | "checkbox" | "code" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "deletion" | "dialog" | "directory" | "document" | "emphasis" | "feed" | "figure" | "form" | "generic" | "grid" | "gridcell" | "group" | "heading" | "img" | "insertion" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "meter" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "paragraph" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "strong" | "subscript" | "superscript" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "time" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem"#

    所需的 aria 角色。

  • options Object (可选)

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveScreenshot(name)

添加于:v1.23 locatorAssertions.toHaveScreenshot(name)

此函数将等待两个连续的定位器截图产生相同的结果,然后将最后一张截图与预期值进行比较。

用法

const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot('image.png');

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

参数

  • name 字符串 | 数组<字符串>#

    快照名称。

  • options Object (可选)

    • animations "disabled" | "allow" (可选)#

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

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

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

    • caret "hide" | "initial" (可选)#

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

    • mask 数组<定位器> (可选)#

      指定在截屏时应遮盖的定位器。被遮盖的元素将覆盖一个完全覆盖其边界框的粉色方框 #FF00FF(由maskColor自定义)。遮盖也适用于不可见元素,请参阅仅匹配可见元素以禁用该功能。

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

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

    • maxDiffPixelRatio 数字 (可选)#

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

    • maxDiffPixels 数字 (可选)#

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

    • omitBackground 布尔值 (可选)#

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

    • scale "css" | "device" (可选)#

      设置为"css"时,截图将为页面上的每个CSS像素生成一个像素。对于高DPI设备,这将使截图保持较小。使用"device"选项将为每个设备像素生成一个像素,因此高DPI设备的截图将是两倍甚至更大。

      默认为 "css"

    • stylePath 字符串 | 数组<字符串> (可选)新增于: v1.41#

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

    • threshold 数字 (可选)#

      比较图像中相同像素的YIQ 色彩空间可接受的感知色差,介于零(严格)和一(宽松)之间,默认值可通过 TestConfig.expect 配置。默认为 0.2

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveScreenshot(options)

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

此函数将等待两个连续的定位器截图产生相同的结果,然后将最后一张截图与预期值进行比较。

用法

const locator = page.getByRole('button');
await expect(locator).toHaveScreenshot();

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

参数

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

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

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

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

    • caret "hide" | "initial" (可选)#

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

    • mask 数组<定位器> (可选)#

      指定在截屏时应遮盖的定位器。被遮盖的元素将覆盖一个完全覆盖其边界框的粉色方框 #FF00FF(由maskColor自定义)。遮盖也适用于不可见元素,请参阅仅匹配可见元素以禁用该功能。

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

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

    • maxDiffPixelRatio 数字 (可选)#

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

    • maxDiffPixels 数字 (可选)#

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

    • omitBackground 布尔值 (可选)#

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

    • scale "css" | "device" (可选)#

      设置为"css"时,截图将为页面上的每个CSS像素生成一个像素。对于高DPI设备,这将使截图保持较小。使用"device"选项将为每个设备像素生成一个像素,因此高DPI设备的截图将是两倍甚至更大。

      默认为 "css"

    • stylePath 字符串 | 数组<字符串> (可选)新增于: v1.41#

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

    • threshold 数字 (可选)#

      比较图像中相同像素的YIQ 色彩空间可接受的感知色差,介于零(严格)和一(宽松)之间,默认值可通过 TestConfig.expect 配置。默认为 0.2

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveText

新增于: v1.20 locatorAssertions.toHaveText

确保定位器指向的元素包含给定文本。计算元素的文本内容时将考虑所有嵌套元素。您也可以使用正则表达式作为值。

用法

const locator = page.locator('.title');
await expect(locator).toHaveText(/Welcome, Test User/);
await expect(locator).toHaveText(/Welcome, .*/);

如果您将数组作为预期值传入,则预期结果是

  1. 定位器解析为元素列表。
  2. 元素的数量等于数组中预期值的数量。
  3. 列表中的元素依次匹配预期数组中的文本值。

例如,考虑以下列表

<ul>
<li>Text 1</li>
<li>Text 2</li>
<li>Text 3</li>
</ul>

我们来看看如何使用断言

// ✓ Has the right items in the right order
await expect(page.locator('ul > li')).toHaveText(['Text 1', 'Text 2', 'Text 3']);

// ✖ Wrong order
await expect(page.locator('ul > li')).toHaveText(['Text 3', 'Text 2', 'Text 1']);

// ✖ Last item does not match
await expect(page.locator('ul > li')).toHaveText(['Text 1', 'Text 2', 'Text']);

// ✖ Locator points to the outer list element, not to the list items
await expect(page.locator('ul')).toHaveText(['Text 1', 'Text 2', 'Text 3']);

参数

  • expected 字符串 | 正则表达式 | 数组<字符串 | 正则表达式>新增于: v1.18#

    预期的字符串或正则表达式或这些的列表。

  • options Object (可选)

    • ignoreCase 布尔值 (可选)添加于:v1.23#

      是否执行不区分大小写的匹配。ignoreCase选项优先于相应的正则表达式标志(如果已指定)。

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

    • useInnerText 布尔值 (可选)新增于: v1.18#

      检索 DOM 节点文本时,是否使用 element.innerText 而不是 element.textContent

返回

详情

expected 参数是一个字符串时,Playwright 会在匹配之前将实际文本和预期字符串中的空格和换行符规范化。当使用正则表达式时,实际文本按原样匹配。


toHaveValue

新增于: v1.20 locatorAssertions.toHaveValue

确保定位器指向具有给定输入值的元素。您也可以使用正则表达式作为值。

用法

const locator = page.locator('input[type=number]');
await expect(locator).toHaveValue(/[0-9]/);

参数

  • value 字符串 | 正则表达式新增于: v1.18#

    预期值。

  • options Object (可选)

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

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toHaveValues

添加于:v1.23 locatorAssertions.toHaveValues

确保定位器指向多选/组合框(即带有 multiple 属性的 select),并且选定了指定的值。

用法

例如,给定以下元素

<select id="favorite-colors" multiple>
<option value="R">Red</option>
<option value="G">Green</option>
<option value="B">Blue</option>
</select>
const locator = page.locator('id=favorite-colors');
await locator.selectOption(['R', 'G']);
await expect(locator).toHaveValues([/R/, /G/]);

参数

返回


toMatchAriaSnapshot(expected)

新增于: v1.49 locatorAssertions.toMatchAriaSnapshot(expected)

断言目标元素与给定的无障碍快照匹配。

用法

await page.goto('https://demo.playwright.dev/todomvc/');
await expect(page.locator('body')).toMatchAriaSnapshot(`
- heading "todos"
- textbox "What needs to be done?"
`);

参数

  • expected 字符串#
  • options Object (可选)
    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


toMatchAriaSnapshot(options)

新增于: v1.50 locatorAssertions.toMatchAriaSnapshot(options)

断言目标元素与给定的无障碍快照匹配。

快照存储在单独的 .aria.yml 文件中,其位置由配置文件中的 expect.toMatchAriaSnapshot.pathTemplate 和/或 snapshotPathTemplate 属性配置。

用法

await expect(page.locator('body')).toMatchAriaSnapshot();
await expect(page.locator('body')).toMatchAriaSnapshot({ name: 'body.aria.yml' });

参数

  • options Object (可选)
    • name 字符串 (可选)#

      存储在此测试对应的快照文件夹中的快照名称。如果未指定,则生成顺序名称。

    • timeout 数字 (可选)#

      断言重试的毫秒数。默认为TestConfig.expect中的timeout

返回


属性

not

新增于: v1.20 locatorAssertions.not

使断言检查相反的条件。例如,此代码测试定位器不包含文本 "error"

await expect(locator).not.toContainText('error');

用法

expect(locator).not

类型