Skip to main content

LocatorAssertions

The LocatorAssertions class provides assertion methods that can be used to make assertions about the Locator state in the tests.

from playwright.sync_api import Page, expect

def test_status_becomes_submitted(page: Page) -> None:
# ..
page.get_by_role("button").click()
expect(page.locator(".status")).to_have_text("Submitted")

方法 (Methods)

not_to_be_attached

Added in: v1.33 locatorAssertions.not_to_be_attached

The opposite of expect(locator).to_be_attached().

使用方式

expect(locator).not_to_be_attached()
expect(locator).not_to_be_attached(**kwargs)

參數

  • attached bool (optional)#

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_checked

Added in: v1.20 locatorAssertions.not_to_be_checked

The opposite of expect(locator).to_be_checked().

使用方式

expect(locator).not_to_be_checked()
expect(locator).not_to_be_checked(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_disabled

Added in: v1.20 locatorAssertions.not_to_be_disabled

The opposite of expect(locator).to_be_disabled().

使用方式

expect(locator).not_to_be_disabled()
expect(locator).not_to_be_disabled(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_editable

Added in: v1.20 locatorAssertions.not_to_be_editable

The opposite of expect(locator).to_be_editable().

使用方式

expect(locator).not_to_be_editable()
expect(locator).not_to_be_editable(**kwargs)

參數

  • editable bool (optional) Added in: v1.26#

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_empty

Added in: v1.20 locatorAssertions.not_to_be_empty

The opposite of expect(locator).to_be_empty().

使用方式

expect(locator).not_to_be_empty()
expect(locator).not_to_be_empty(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_enabled

Added in: v1.20 locatorAssertions.not_to_be_enabled

The opposite of expect(locator).to_be_enabled().

使用方式

expect(locator).not_to_be_enabled()
expect(locator).not_to_be_enabled(**kwargs)

參數

  • enabled bool (optional) Added in: v1.26#

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_focused

Added in: v1.20 locatorAssertions.not_to_be_focused

The opposite of expect(locator).to_be_focused().

使用方式

expect(locator).not_to_be_focused()
expect(locator).not_to_be_focused(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_hidden

Added in: v1.20 locatorAssertions.not_to_be_hidden

The opposite of expect(locator).to_be_hidden().

使用方式

expect(locator).not_to_be_hidden()
expect(locator).not_to_be_hidden(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_in_viewport

Added in: v1.31 locatorAssertions.not_to_be_in_viewport

The opposite of expect(locator).to_be_in_viewport().

使用方式

expect(locator).not_to_be_in_viewport()
expect(locator).not_to_be_in_viewport(**kwargs)

參數

  • ratio float (optional)#

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_be_visible

Added in: v1.20 locatorAssertions.not_to_be_visible

The opposite of expect(locator).to_be_visible().

使用方式

expect(locator).not_to_be_visible()
expect(locator).not_to_be_visible(**kwargs)

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • visible bool (optional) Added in: v1.26#

傳回值


not_to_contain_class

Added in: v1.52 locatorAssertions.not_to_contain_class

The opposite of expect(locator).to_contain_class().

使用方式

expect(locator).not_to_contain_class(expected)
expect(locator).not_to_contain_class(expected, **kwargs)

參數

  • expected str | List[str]#

    Expected class or RegExp or a list of those.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_contain_text

Added in: v1.20 locatorAssertions.not_to_contain_text

The opposite of expect(locator).to_contain_text().

使用方式

expect(locator).not_to_contain_text(expected)
expect(locator).not_to_contain_text(expected, **kwargs)

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected substring or RegExp or a list of those.

  • ignore_case bool (optional) Added in: v1.23#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • use_inner_text bool (optional) Added in: v1.18#

    Whether to use element.innerText instead of element.textContent when retrieving DOM node text.

傳回值


not_to_have_accessible_description

Added in: v1.44 locatorAssertions.not_to_have_accessible_description

The opposite of expect(locator).to_have_accessible_description().

使用方式

expect(locator).not_to_have_accessible_description(name)
expect(locator).not_to_have_accessible_description(name, **kwargs)

參數

  • description str | Pattern#

    Expected accessible description.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_accessible_error_message

Added in: v1.50 locatorAssertions.not_to_have_accessible_error_message

The opposite of expect(locator).to_have_accessible_error_message().

使用方式

expect(locator).not_to_have_accessible_error_message(error_message)
expect(locator).not_to_have_accessible_error_message(error_message, **kwargs)

參數

  • error_message str | Pattern#

    Expected accessible error message.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_accessible_name

Added in: v1.44 locatorAssertions.not_to_have_accessible_name

The opposite of expect(locator).to_have_accessible_name().

使用方式

expect(locator).not_to_have_accessible_name(name)
expect(locator).not_to_have_accessible_name(name, **kwargs)

參數

  • name str | Pattern#

    Expected accessible name.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_attribute

Added in: v1.20 locatorAssertions.not_to_have_attribute

The opposite of expect(locator).to_have_attribute().

使用方式

expect(locator).not_to_have_attribute(name, value)
expect(locator).not_to_have_attribute(name, value, **kwargs)

參數

  • name str Added in: v1.18#

    Attribute name.

  • value str | Pattern Added in: v1.18#

    Expected attribute value.

  • ignore_case bool (optional) Added in: v1.40#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_class

Added in: v1.20 locatorAssertions.not_to_have_class

The opposite of expect(locator).to_have_class().

使用方式

expect(locator).not_to_have_class(expected)
expect(locator).not_to_have_class(expected, **kwargs)

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected class or RegExp or a list of those.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_count

Added in: v1.20 locatorAssertions.not_to_have_count

The opposite of expect(locator).to_have_count().

使用方式

expect(locator).not_to_have_count(count)
expect(locator).not_to_have_count(count, **kwargs)

參數

  • count int Added in: v1.18#

    Expected count.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_css

Added in: v1.20 locatorAssertions.not_to_have_css

The opposite of expect(locator).to_have_css().

使用方式

expect(locator).not_to_have_css(name, value)
expect(locator).not_to_have_css(name, value, **kwargs)

參數

  • name str Added in: v1.18#

    CSS property name.

  • value str | Pattern Added in: v1.18#

    CSS property value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_id

Added in: v1.20 locatorAssertions.not_to_have_id

The opposite of expect(locator).to_have_id().

使用方式

expect(locator).not_to_have_id(id)
expect(locator).not_to_have_id(id, **kwargs)

參數

  • id str | Pattern Added in: v1.18#

    Element id.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_js_property

Added in: v1.20 locatorAssertions.not_to_have_js_property

The opposite of expect(locator).to_have_js_property().

使用方式

expect(locator).not_to_have_js_property(name, value)
expect(locator).not_to_have_js_property(name, value, **kwargs)

參數

  • name str Added in: v1.18#

    Property name.

  • value Any Added in: v1.18#

    Property value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_role

Added in: v1.44 locatorAssertions.not_to_have_role

The opposite of expect(locator).to_have_role().

使用方式

expect(locator).not_to_have_role(role)
expect(locator).not_to_have_role(role, **kwargs)

參數

  • 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"#

    Required aria role.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_text

Added in: v1.20 locatorAssertions.not_to_have_text

The opposite of expect(locator).to_have_text().

使用方式

expect(locator).not_to_have_text(expected)
expect(locator).not_to_have_text(expected, **kwargs)

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected string or RegExp or a list of those.

  • ignore_case bool (optional) Added in: v1.23#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • use_inner_text bool (optional) Added in: v1.18#

    Whether to use element.innerText instead of element.textContent when retrieving DOM node text.

傳回值


not_to_have_value

Added in: v1.20 locatorAssertions.not_to_have_value

The opposite of expect(locator).to_have_value().

使用方式

expect(locator).not_to_have_value(value)
expect(locator).not_to_have_value(value, **kwargs)

參數

  • value str | Pattern Added in: v1.18#

    Expected value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


not_to_have_values

Added in: v1.23 locatorAssertions.not_to_have_values

The opposite of expect(locator).to_have_values().

使用方式

expect(locator).not_to_have_values(values)
expect(locator).not_to_have_values(values, **kwargs)

參數

傳回值


not_to_match_aria_snapshot

Added in: v1.49 locatorAssertions.not_to_match_aria_snapshot

The opposite of expect(locator).to_match_aria_snapshot().

使用方式

expect(locator).not_to_match_aria_snapshot(expected)
expect(locator).not_to_match_aria_snapshot(expected, **kwargs)

參數

  • expected str#

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_attached

Added in: v1.33 locatorAssertions.to_be_attached

Ensures that Locator points to an element that is connected to a Document or a ShadowRoot.

使用方式

expect(page.get_by_text("Hidden text")).to_be_attached()

參數

  • attached bool (optional)#

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_checked

Added in: v1.20 locatorAssertions.to_be_checked

Ensures the Locator points to a checked input.

使用方式

from playwright.sync_api import expect

locator = page.get_by_label("Subscribe to newsletter")
expect(locator).to_be_checked()

參數

  • checked bool (optional) Added in: v1.18#

    Provides state to assert for. Asserts for input to be checked by default. This option can't be used when indeterminate is set to true.

  • indeterminate bool (optional) Added in: v1.50#

    Asserts that the element is in the indeterminate (mixed) state. Only supported for checkboxes and radio buttons. This option can't be true when checked is provided.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_disabled

Added in: v1.20 locatorAssertions.to_be_disabled

Ensures the Locator points to a disabled element. Element is disabled if it has "disabled" attribute or is disabled via 'aria-disabled'. Note that only native control elements such as HTML button, input, select, textarea, option, optgroup can be disabled by setting "disabled" attribute. "disabled" attribute on other elements is ignored by the browser.

使用方式

from playwright.sync_api import expect

locator = page.locator("button.submit")
expect(locator).to_be_disabled()

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_editable

Added in: v1.20 locatorAssertions.to_be_editable

Ensures the Locator points to an editable element.

使用方式

from playwright.sync_api import expect

locator = page.get_by_role("textbox")
expect(locator).to_be_editable()

參數

  • editable bool (optional) Added in: v1.26#

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_empty

Added in: v1.20 locatorAssertions.to_be_empty

Ensures the Locator points to an empty editable element or to a DOM node that has no text.

使用方式

from playwright.sync_api import expect

locator = page.locator("div.warning")
expect(locator).to_be_empty()

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_enabled

Added in: v1.20 locatorAssertions.to_be_enabled

Ensures the Locator points to an enabled element.

使用方式

from playwright.sync_api import expect

locator = page.locator("button.submit")
expect(locator).to_be_enabled()

參數

  • enabled bool (optional) Added in: v1.26#

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_focused

Added in: v1.20 locatorAssertions.to_be_focused

Ensures the Locator points to a focused DOM node.

使用方式

from playwright.sync_api import expect

locator = page.get_by_role("textbox")
expect(locator).to_be_focused()

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_hidden

Added in: v1.20 locatorAssertions.to_be_hidden

Ensures that Locator either does not resolve to any DOM node, or resolves to a non-visible one.

使用方式

from playwright.sync_api import expect

locator = page.locator('.my-element')
expect(locator).to_be_hidden()

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_in_viewport

Added in: v1.31 locatorAssertions.to_be_in_viewport

Ensures the Locator points to an element that intersects viewport, according to the intersection observer API.

使用方式

from playwright.sync_api import expect

locator = page.get_by_role("button")
# Make sure at least some part of element intersects viewport.
expect(locator).to_be_in_viewport()
# Make sure element is fully outside of viewport.
expect(locator).not_to_be_in_viewport()
# Make sure that at least half of the element intersects viewport.
expect(locator).to_be_in_viewport(ratio=0.5)

參數

  • ratio float (optional)#

    The minimal ratio of the element to intersect viewport. If equals to 0, then element should intersect viewport at any positive ratio. Defaults to 0.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_be_visible

Added in: v1.20 locatorAssertions.to_be_visible

Ensures that Locator points to an attached and visible DOM node.

To check that at least one element from the list is visible, use locator.first.

使用方式

# A specific element is visible.
expect(page.get_by_text("Welcome")).to_be_visible()

# At least one item in the list is visible.
expect(page.get_by_test_id("todo-item").first).to_be_visible()

# At least one of the two elements is visible, possibly both.
expect(
page.get_by_role("button", name="Sign in")
.or_(page.get_by_role("button", name="Sign up"))
.first
).to_be_visible()

參數

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • visible bool (optional) Added in: v1.26#

傳回值


to_contain_class

Added in: v1.52 locatorAssertions.to_contain_class

Ensures the Locator points to an element with given CSS classes. All classes from the asserted value, separated by spaces, must be present in the Element.classList in any order.

使用方式

<div class='middle selected row' id='component'></div>
from playwright.sync_api import expect

locator = page.locator("#component")
expect(locator).to_contain_class("middle selected row")
expect(locator).to_contain_class("selected")
expect(locator).to_contain_class("row middle")

When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class lists. Each element's class attribute is matched against the corresponding class in the array:

<div class='list'>
<div class='component inactive'></div>
<div class='component active'></div>
<div class='component inactive'></div>
</div>
from playwright.sync_api import expect

locator = page.locator(".list > .component")
await expect(locator).to_contain_class(["inactive", "active", "inactive"])

參數

  • expected str | List[str]#

    A string containing expected class names, separated by spaces, or a list of such strings to assert multiple elements.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_contain_text

Added in: v1.20 locatorAssertions.to_contain_text

Ensures the Locator points to an element that contains the given text. All nested elements will be considered when computing the text content of the element. You can use regular expressions for the value as well.

使用方式

import re
from playwright.sync_api import expect

locator = page.locator('.title')
expect(locator).to_contain_text("substring")
expect(locator).to_contain_text(re.compile(r"\d messages"))

If you pass an array as an expected value, the expectations are:

  1. Locator resolves to a list of elements.
  2. Elements from a subset of this list contain text from the expected array, respectively.
  3. The matching subset of elements has the same order as the expected array.
  4. Each text value from the expected array is matched by some element from the list.

For example, consider the following list:

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

Let's see how we can use the assertion:

from playwright.sync_api import expect

# ✓ Contains the right items in the right order
expect(page.locator("ul > li")).to_contain_text(["Text 1", "Text 3", "Text 4"])

# ✖ Wrong order
expect(page.locator("ul > li")).to_contain_text(["Text 3", "Text 2"])

# ✖ No item contains this text
expect(page.locator("ul > li")).to_contain_text(["Some 33"])

# ✖ Locator points to the outer list element, not to the list items
expect(page.locator("ul")).to_contain_text(["Text 3"])

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected substring or RegExp or a list of those.

  • ignore_case bool (optional) Added in: v1.23#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • use_inner_text bool (optional) Added in: v1.18#

    Whether to use element.innerText instead of element.textContent when retrieving DOM node text.

傳回值

Details

When expected parameter is a string, Playwright will normalize whitespaces and line breaks both in the actual text and in the expected string before matching. When regular expression is used, the actual text is matched as is.


to_have_accessible_description

Added in: v1.44 locatorAssertions.to_have_accessible_description

Ensures the Locator points to an element with a given accessible description.

使用方式

locator = page.get_by_test_id("save-button")
expect(locator).to_have_accessible_description("Save results to disk")

參數

  • description str | Pattern#

    Expected accessible description.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_accessible_error_message

Added in: v1.50 locatorAssertions.to_have_accessible_error_message

Ensures the Locator points to an element with a given aria errormessage.

使用方式

locator = page.get_by_test_id("username-input")
expect(locator).to_have_accessible_error_message("Username is required.")

參數

  • error_message str | Pattern#

    Expected accessible error message.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_accessible_name

Added in: v1.44 locatorAssertions.to_have_accessible_name

Ensures the Locator points to an element with a given accessible name.

使用方式

locator = page.get_by_test_id("save-button")
expect(locator).to_have_accessible_name("Save to disk")

參數

  • name str | Pattern#

    Expected accessible name.

  • ignore_case bool (optional)#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_attribute

Added in: v1.20 locatorAssertions.to_have_attribute

Ensures the Locator points to an element with given attribute.

使用方式

from playwright.sync_api import expect

locator = page.locator("input")
expect(locator).to_have_attribute("type", "text")

參數

  • name str Added in: v1.18#

    Attribute name.

  • value str | Pattern Added in: v1.18#

    Expected attribute value.

  • ignore_case bool (optional) Added in: v1.40#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_class

Added in: v1.20 locatorAssertions.to_have_class

Ensures the Locator points to an element with given CSS classes. When a string is provided, it must fully match the element's class attribute. To match individual classes use expect(locator).to_contain_class().

使用方式

<div class='middle selected row' id='component'></div>
from playwright.sync_api import expect

locator = page.locator("#component")
expect(locator).to_have_class("middle selected row")
expect(locator).to_have_class(re.compile(r"(^|\\s)selected(\\s|$)"))

When an array is passed, the method asserts that the list of elements located matches the corresponding list of expected class values. Each element's class attribute is matched against the corresponding string or regular expression in the array:

from playwright.sync_api import expect

locator = page.locator(".list > .component")
expect(locator).to_have_class(["component", "component selected", "component"])

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected class or RegExp or a list of those.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_count

Added in: v1.20 locatorAssertions.to_have_count

Ensures the Locator resolves to an exact number of DOM nodes.

使用方式

from playwright.sync_api import expect

locator = page.locator("list > .component")
expect(locator).to_have_count(3)

參數

  • count int Added in: v1.18#

    Expected count.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_css

Added in: v1.20 locatorAssertions.to_have_css

Ensures the Locator resolves to an element with the given computed CSS style.

使用方式

from playwright.sync_api import expect

locator = page.get_by_role("button")
expect(locator).to_have_css("display", "flex")

參數

  • name str Added in: v1.18#

    CSS property name.

  • value str | Pattern Added in: v1.18#

    CSS property value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_id

Added in: v1.20 locatorAssertions.to_have_id

Ensures the Locator points to an element with the given DOM Node ID.

使用方式

from playwright.sync_api import expect

locator = page.get_by_role("textbox")
expect(locator).to_have_id("lastname")

參數

  • id str | Pattern Added in: v1.18#

    Element id.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_js_property

Added in: v1.20 locatorAssertions.to_have_js_property

Ensures the Locator points to an element with given JavaScript property. Note that this property can be of a primitive type as well as a plain serializable JavaScript object.

使用方式

from playwright.sync_api import expect

locator = page.locator(".component")
expect(locator).to_have_js_property("loaded", True)

參數

  • name str Added in: v1.18#

    Property name.

  • value Any Added in: v1.18#

    Property value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_role

Added in: v1.44 locatorAssertions.to_have_role

Ensures the Locator points to an element with a given ARIA role.

Note that role is matched as a string, disregarding the ARIA role hierarchy. For example, asserting a superclass role "checkbox" on an element with a subclass role "switch" will fail.

使用方式

locator = page.get_by_test_id("save-button")
expect(locator).to_have_role("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"#

    Required aria role.

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_text

Added in: v1.20 locatorAssertions.to_have_text

Ensures the Locator points to an element with the given text. All nested elements will be considered when computing the text content of the element. You can use regular expressions for the value as well.

使用方式

import re
from playwright.sync_api import expect

locator = page.locator(".title")
expect(locator).to_have_text(re.compile(r"Welcome, Test User"))
expect(locator).to_have_text(re.compile(r"Welcome, .*"))

If you pass an array as an expected value, the expectations are:

  1. Locator resolves to a list of elements.
  2. The number of elements equals the number of expected values in the array.
  3. Elements from the list have text matching expected array values, one by one, in order.

For example, consider the following list:

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

Let's see how we can use the assertion:

from playwright.sync_api import expect

# ✓ Has the right items in the right order
expect(page.locator("ul > li")).to_have_text(["Text 1", "Text 2", "Text 3"])

# ✖ Wrong order
expect(page.locator("ul > li")).to_have_text(["Text 3", "Text 2", "Text 1"])

# ✖ Last item does not match
expect(page.locator("ul > li")).to_have_text(["Text 1", "Text 2", "Text"])

# ✖ Locator points to the outer list element, not to the list items
expect(page.locator("ul")).to_have_text(["Text 1", "Text 2", "Text 3"])

參數

  • expected str | Pattern | List[str] | List[Pattern] | List[str | Pattern] Added in: v1.18#

    Expected string or RegExp or a list of those.

  • ignore_case bool (optional) Added in: v1.23#

    Whether to perform case-insensitive match. ignore_case option takes precedence over the corresponding regular expression flag if specified.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

  • use_inner_text bool (optional) Added in: v1.18#

    Whether to use element.innerText instead of element.textContent when retrieving DOM node text.

傳回值

Details

When expected parameter is a string, Playwright will normalize whitespaces and line breaks both in the actual text and in the expected string before matching. When regular expression is used, the actual text is matched as is.


to_have_value

Added in: v1.20 locatorAssertions.to_have_value

Ensures the Locator points to an element with the given input value. You can use regular expressions for the value as well.

使用方式

import re
from playwright.sync_api import expect

locator = page.locator("input[type=number]")
expect(locator).to_have_value(re.compile(r"[0-9]"))

參數

  • value str | Pattern Added in: v1.18#

    Expected value.

  • timeout float (optional) Added in: v1.18#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值


to_have_values

Added in: v1.23 locatorAssertions.to_have_values

Ensures the Locator points to multi-select/combobox (i.e. a select with the multiple attribute) and the specified values are selected.

使用方式

For example, given the following element:

<select id="favorite-colors" multiple>
<option value="R">Red</option>
<option value="G">Green</option>
<option value="B">Blue</option>
</select>
import re
from playwright.sync_api import expect

locator = page.locator("id=favorite-colors")
locator.select_option(["R", "G"])
expect(locator).to_have_values([re.compile(r"R"), re.compile(r"G")])

參數

傳回值


to_match_aria_snapshot

Added in: v1.49 locatorAssertions.to_match_aria_snapshot

Asserts that the target element matches the given accessibility snapshot.

使用方式

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

參數

  • expected str#

  • timeout float (optional)#

    Time to retry the assertion for in milliseconds. Defaults to 5000.

傳回值