Playwright中Assertions斷言的方法實現(xiàn)
在編寫測試時,我們使用assert語句來斷言一段條件并以此為基礎(chǔ)條件,我們要么通過測試,要么不通過測試。Playwright給我們提供了另一個API,可以以一種更易讀的方式用來執(zhí)行相同的判斷。
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,則必須使用正則表達(dá)式。
如果還是使用上面的寫法,修改為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")
)
現(xiàn)在可以在這個模式中使用所有的正則表達(dá)式語法。
假設(shè)這個類應(yīng)該從navbar __item開始,那我們的寫法應(yīng)為: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"])
到此這篇關(guān)于Playwright中Assertions斷言的方法實現(xiàn)的文章就介紹到這了,更多相關(guān)Playwright Assertions斷言內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pycharm報錯Non-zero?exit?code?(2)的完美解決方案
最近在使用pycharm安裝或升級模塊時出現(xiàn)了錯誤,下面這篇文章主要給大家介紹了關(guān)于Pycharm報錯Non-zero?exit?code?(2)的完美解決方案,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
python使用fastapi實現(xiàn)多語言國際化的操作指南
本文介紹了使用Python和FastAPI實現(xiàn)多語言國際化的操作指南,包括多語言架構(gòu)技術(shù)棧、翻譯管理、前端本地化、語言切換機(jī)制以及常見陷阱和最佳實踐,需要的朋友可以參考下2025-02-02
簡單了解Python下用于監(jiān)視文件系統(tǒng)的pyinotify包
這篇文章主要介紹了Python下用于監(jiān)視文件系統(tǒng)的pyinotify包,pyinotify基于inotify事件驅(qū)動機(jī)制,需要的朋友可以參考下2015-11-11

