Playwright中Assertions断言的方法实现

Written by

in

文章目录
  • 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:
  • 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(),报错如下:
  • 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:
  • 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()
  • 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断言内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: python playwright 自动等待和断言详解
  • 目录
    • 1. Page Assertions
    • 2. Element State Assertions
    • 3. Inner Text Assertions
      • 3.1 Heading
      • 3.2 Dropdown list
    • 4. Attribute Assertions
      • 4.1 class
      • 4.2 id
      • 4.3 attribute
    • 5. Input Field Assertions
      • 6. Checkbox Assertions
        • 7. Option Assertions

          在编写测试时,我们使用assert语句来断言一段条件并以此为基础条件,我们要么通过测试,要么不通过测试。Playwright给我们提供了另一个API,可以以一种更易读的方式用来执行相同的判断。

          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:

          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(),报错如下:

          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."))
          

          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:

          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")

          我们也可以expect元素ID:expect(docs_link).to_have_id("playwright")

          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"
              )
          

          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:

          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()
          

          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断言内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

          您可能感兴趣的文章:

          • python playwright 自动等待和断言详解

          站内搜索