在编写测试时,我们使用assert语句来断言一段条件并以此为基础条件,我们要么通过测试,要么不通过测试。playwright给我们提供了另一个api,可以以一种更易读的方式用来执行相同的判断。
1. page assertions
from playwright.sync_api import page, expect
docs_url = "https://playwright.dev/python/docs/intro"
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
link = page.get_by_role("link", name="get started")
link.click()
# page assertions
# assert page.url == docs_url
expect(page).to_have_url(docs_url)
expect(page).to_have_title("installation | playwright python")
run:

2. element state assertions
from playwright.sync_api import page, expect
docs_url = "https://playwright.dev/python/docs/intro"
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
link = page.get_by_role("link", name="get started")
# not exist in ui
link_not = page.get_by_role("link", name="get python")
expect(link).to_be_visible()
expect(link).to_be_enabled()
expect(link_not).not_to_be_visible()
expect(link_not).to_be_hidden()
link.click()
run:

注意,link_not 在页面上不存在,如果使用expect(link_not ).to_be_visible(),报错如下:

3. inner text assertions
3.1 heading

from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
heading = page.locator("h1.hero__title")
# inner text assertions
expect(heading).to_contain_text("testing")
expect(heading).to_have_text(("playwright enables reliable end-to-end testing for modern web apps."))
3.2 dropdown list

from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
dropdown_menu = page.locator("ul.dropdown__menu")
# inner text assertions
expect(dropdown_menu).to_contain_text("python")
expect(dropdown_menu).to_contain_text("java")
expect(dropdown_menu).to_contain_text("node.js")
expect(dropdown_menu).to_contain_text(".net")
run all:

4. attribute assertions

4.1 class
from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
docs_link = page.get_by_role("link", name="docs")
expect(docs_link).to_have_class("navbar__item navbar__link")
run:

如果只想check或expect一个元素的一个class,则必须使用正则表达式。
如果还是使用上面的写法,修改为expect(docs_link).to_have_class("navbar__link")
run:

所以,正确的写法如下:
import re
from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
docs_link = page.get_by_role("link", name="docs")
expect(docs_link).to_have_class(
re.compile(r"navbar__link")
)
现在可以在这个模式中使用所有的正则表达式语法。
假设这个类应该从navbar __item开始,那我们的写法应为:re.compile(r"^navbar__item")
4.2 id
我们也可以expect元素id:expect(docs_link).to_have_id("playwright")。
4.3 attribute
from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
docs_link = page.get_by_role("link", name="docs")
expect(docs_link).to_have_attribute(
"href", "/python/docs/intro"
)
5. input field assertions


from playwright.sync_api import page, expect
def test_get_started_link(page: page):
page.goto("https://playwright.dev/python")
input = page.get_by_placeholder("search docs")
# input is hidden before button click
expect(input).to_be_hidden()
# search button
search_button = page.get_by_role("button", name="search")
search_button.click()
# should pop the search menu
expect(input).to_be_editable()
expect(input).to_be_empty()
# type some query in the input
query = "assertions"
input.fill(query)
# check input value
expect(input).to_have_value(query)
run:

6. checkbox assertions

from playwright.sync_api import page, expect
def test_app(page: page):
page.goto("https://bootswatch.com/default/")
checked_checkbox = page.get_by_label("checked checkbox")
default_checkbox = page.get_by_label("default checkbox")
expect(checked_checkbox).to_be_checked()
expect(default_checkbox).not_to_be_checked()
7. option assertions

from playwright.sync_api import page, expect
def test_app(page: page):
page.goto("https://bootswatch.com/default/")
option_menu = page.get_by_label("example select")
expect(option_menu).to_have_value("1")
multi_option_menu = page.get_by_label("example multiple select")
multi_option_menu.select_option(["2", "4"])
expect(multi_option_menu).to_have_values(["2", "4"])
到此这篇关于playwright中assertions断言的方法实现的文章就介绍到这了,更多相关playwright assertions断言内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论