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解析为一个元素列表。
  • 该列表子集中的元素分别包含预期数组中的文本。
  • 匹配的元素子集的顺序与期望的数组相同。
  • 期望数组中的每个文本值都与列表中的某个元素匹配。
相关文章
|
存储 缓存 文件存储
如何保证分布式文件系统的数据一致性
分布式文件系统需要向上层应用提供透明的客户端缓存,从而缓解网络延时现象,更好地支持客户端性能水平扩展,同时也降低对文件服务器的访问压力。当考虑客户端缓存的时候,由于在客户端上引入了多个本地数据副本(Replica),就相应地需要提供客户端对数据访问的全局数据一致性。
33077 80
如何保证分布式文件系统的数据一致性
|
前端开发 容器
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局(上)
HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局
17818 24
|
设计模式 存储 监控
设计模式(C++版)
看懂UML类图和时序图30分钟学会UML类图设计原则单一职责原则定义:单一职责原则,所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于一个的职责。而单一职责原则就是指一个类或者模块应该有且只有一个改变的原因。bad case:IPhone类承担了协议管理(Dial、HangUp)、数据传送(Chat)。good case:里式替换原则定义:里氏代换原则(Liskov 
36801 22
设计模式(C++版)
|
存储 编译器 C语言
抽丝剥茧C语言(初阶 下)(下)
抽丝剥茧C语言(初阶 下)
|
机器学习/深度学习 人工智能 自然语言处理
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
带你简单了解Chatgpt背后的秘密:大语言模型所需要条件(数据算法算力)以及其当前阶段的缺点局限性
24873 15
|
机器学习/深度学习 弹性计算 监控
重生之---我测阿里云U1实例(通用算力型)
阿里云产品全线降价的一力作,2023年4月阿里云推出新款通用算力型ECS云服务器Universal实例,该款服务器的真实表现如何?让我先测为敬!
36786 15
重生之---我测阿里云U1实例(通用算力型)
|
SQL 存储 弹性计算
Redis性能高30%,阿里云倚天ECS性能摸底和迁移实践
Redis在倚天ECS环境下与同规格的基于 x86 的 ECS 实例相比,Redis 部署在基于 Yitian 710 的 ECS 上可获得高达 30% 的吞吐量优势。成本方面基于倚天710的G8y实例售价比G7实例低23%,总性价比提高50%;按照相同算法,相对G8a,性价比为1.4倍左右。
|
存储 算法 Java
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的限流器RateLimiter功能服务
随着互联网的快速发展,越来越多的应用程序需要处理大量的请求。如果没有限制,这些请求可能会导致应用程序崩溃或变得不可用。因此,限流器是一种非常重要的技术,可以帮助应用程序控制请求的数量和速率,以保持稳定和可靠的运行。
29925 52

热门文章

最新文章