python+playwright 学习-71 expect 断言设置timeout 超时和自定义错误内容
前言
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