前言

playwright 提供了一个 expect方法 用于断言,还可以设置超时时间。

expect 使用

断言 描述
expect(locator).to_be_checked() Checkbox is checked
expect(locator).to_be_disabled() Element is disabled
expect(locator).to_be_editable() Element is enabled
expect(locator).to_be_empty() Container is empty
expect(locator).to_be_enabled() Element is enabled
expect(locator).to_be_focused() Element is focused
expect(locator).to_be_hidden() Element is not visible
expect(locator).to_be_visible() Element is visible
expect(locator).to_contain_text() Element contains text
expect(locator).to_have_attribute() Element has a DOM attribute
expect(locator).to_have_class() Element has a class property
expect(locator).to_have_count() List has exact number of children
expect(locator).to_have_css() Element has CSS property
expect(locator).to_have_id() Element has an ID
expect(locator).to_have_js_property() Element has a JavaScript property
expect(locator).to_have_text() Element matches text
expect(locator).to_have_value() Input has a value
expect(locator).to_have_values() Select has options selected
expect(page).to_have_title() Page has a title
expect(page).to_have_url() Page has a URL
expect(api_response).to_be_ok() Response has an OK status

to_be_checked()使用示例

from playwright.sync_api import expect

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

to_be_visible()使用示例

# 上海悠悠 wx:283340479  
# blog:https://www.cnblogs.com/yoyoketang/

from playwright.sync_api import expect

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

设置超时

如下图中的提示语,点击按钮后,可能在1秒内就会出现提示框。

默认情况下,断言超时时间是5秒钟, 你也可以自定义超时时间.

from playwright.sync_api import expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


def test_foobar(page: Page) -> None:
    # ......
    expect(page.get_by_text("操作成功")).to_be_visible(timeout=3000)

在conftest.py 中设置全局 expect 超时

from playwright.sync_api import expect

expect.set_options(timeout=8000)

自定义异常消息

expect 中添加第二个参数,设置自定义报错消息内容

expect(page.get_by_text("Name"), "should be logged in").to_be_visible()

断言报错后显示

    def test_foobar(page: Page) -> None:
>       expect(page.get_by_text("Name"), "should be logged in").to_be_visible()
E       AssertionError: should be logged in
E       Actual value: None 
E       Call log:
E       LocatorAssertions.to_be_visible with timeout 5000ms
E       waiting for get_by_text("Name")
E       waiting for get_by_text("Name")

tests/test_foobar.py:22: AssertionError

文章转自:https://www.cnblogs.com/yoyoketang/p/17642111.html