Playwright系列(9):如何写断言

简介: Playwright系列(9):如何写断言

大家好,我是阿萨。 一个成功的自动化脚本离不开一个比较好的断言,我们学习了如何操作页面元素后,就需要学会如任何校验结果的正确性。今天阿萨带大家来学习断言的写法。

Playwright提供了web优先的断言,提供了创建断言的便捷方法,这些断言会等待并重试,直到满足预期的条件。

以下面一段代码为例:


from playwright.sync_api import Page, expectdef test_status_becomes_submitted(page: Page) -> None:    # ..    page.locator("#submit-button").click()    expect(page.locator(".status")).to_have_text("Submitted")


Playwright 会不断重试直到 .status 的节点出现“Submitted” 这个文本。它会一遍又一遍的不断去获取元素, 检查是否满足条件,直到满足条件或者超时。 默认超时时间是5 秒。

Playwright 提供的常见的断言方法有如下类型


expect(locator).not_to_be_checked(**kwargs)expect(locator).not_to_be_disabled(**kwargs)expect(locator).not_to_be_editable(**kwargs)expect(locator).not_to_be_empty(**kwargs)expect(locator).not_to_be_enabled(**kwargs)expect(locator).not_to_be_focused(**kwargs)expect(locator).not_to_be_hidden(**kwargs)expect(locator).not_to_be_visible(**kwargs)expect(locator).not_to_contain_text(expected, **kwargs)expect(locator).not_to_have_attribute(name, value, **kwargs)expect(locator).not_to_have_class(expected, **kwargs)expect(locator).not_to_have_count(count, **kwargs)expect(locator).not_to_have_css(name, value, **kwargs)expect(locator).not_to_have_id(id, **kwargs)expect(locator).not_to_have_js_property(name, value, **kwargs)expect(locator).not_to_have_text(expected, **kwargs)expect(locator).not_to_have_value(value, **kwargs)expect(locator).not_to_have_values(values, **kwargs)expect(locator).to_be_checked(**kwargs)expect(locator).to_be_disabled(**kwargs)expect(locator).to_be_editable(**kwargs)expect(locator).to_be_empty(**kwargs)expect(locator).to_be_enabled(**kwargs)expect(locator).to_be_focused(**kwargs)expect(locator).to_be_hidden(**kwargs)expect(locator).to_be_visible(**kwargs)expect(locator).to_contain_text(expected, **kwargs)expect(locator).to_have_attribute(name, value, **kwargs)expect(locator).to_have_class(expected, **kwargs)expect(locator).to_have_count(count, **kwargs)expect(locator).to_have_css(name, value, **kwargs)expect(locator).to_have_id(id, **kwargs)expect(locator).to_have_js_property(name, value, **kwargs)expect(locator).to_have_text(expected, **kwargs)expect(locator).to_have_value(value, **kwargs)expect(locator).to_have_values(values, **kwargs)expect(page).not_to_have_title(title_or_reg_exp, **kwargs)expect(page).not_to_have_url(url_or_reg_exp, **kwargs)expect(page).to_have_title(title_or_reg_exp, **kwargs)expect(page).to_have_url(url_or_reg_exp, **kwargs)expect(api_response).not_to_be_ok()expect(api_response).to_be_ok()


比较简单的,我们就不展开了。重点说一些有特殊设置的。

expect(locator).to_contain_text(expected, **kwargs)


  • expected 参数可以是string ,Pattern, list 等,正则表达式或者字符都接受。
  • ignore_case 确认是否匹配大小写。
  • timeout 超时时间。
  • use_inner_text 是否使用 element.innerText 代替 element.textContent 。

如果传入一个数组作为期望值,则期望为:

  • Locator解析为一个元素列表。
  • 该列表子集中的元素分别包含预期数组中的文本。
  • 匹配的元素子集的顺序与期望的数组相同。
  • 期望数组中的每个文本值都与列表中的某个元素匹配。
相关文章
|
3月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
96 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
8月前
|
测试技术
PlayWright系列(2):如何写测试脚本
PlayWright系列(2):如何写测试脚本
136 0
PlayWright系列(2):如何写测试脚本
|
8月前
cypress如何写断言?
cypress如何写断言?
|
8月前
|
测试技术
Playwright 系列(16):如何写上传的用例?
Playwright 系列(16):如何写上传的用例?
155 0
|
8月前
|
测试技术
Playwright 系列(15):如何写下载的用例
Playwright 系列(15):如何写下载的用例
198 0
|
8月前
|
存储 设计模式 前端开发
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~
|
存储 JavaScript 前端开发
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(二)
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(二)
|
存储 前端开发 JavaScript
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(三)
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(三)
|
JavaScript 前端开发
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(一)
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(一)
|
设计模式 JavaScript 前端开发
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(四)
【JavaScript】10个技巧干掉你代码中那些丑陋冗长的 if...else 语句~(四)