分享好友 最新资讯首页 最新资讯分类 切换频道
Playwright实战:快照功能介绍
2025-02-03 16:15

Aria Snapshots是Playwright中的一个功能,它提供了一种以YAML格式表示页面可访问性树的方法。这些快照可以存储并稍后进行比较,以验证页面结构是否保持一致或符合定义的期望。YAML格式描述了页面上可访问元素的层次结构,详细列出了角色、属性、值和文本内容。

可访问性树结构遵循树状语法,其中每个节点表示一个可访问元素,缩进表示嵌套元素。例如,对于一个包含标题、列表和按钮的简单页面,其Aria Snapshot可能如下所示

 

在这个示例中,页面的根元素是一个文档(document,包含了一个一级标题(heading)、一个列表(list)和一个按钮(button)。列表中的每个项目都是一个列表项(listitem,并且每个元素都有一个可访问的名称。

Playwright提供了断言方法,用于比较定位器作用域内的可访问结构与预定义的Aria Snapshot模板。这有助于验证页面的状态是否符合测试要求。

当进行匹配时,快照模板会与页面的当前可访问性树进行比较。如果树结构与模板匹配,则测试通过;否则,测试失败,表明预期和实际的可访问状态之间存在不匹配。

比较是区分大小写的,并且会折叠空白字符,因此缩进和换行符会被忽略。此外,比较还是顺序敏感的,这意味着快照模板中的元素顺序必须与页面可访问性树中的元素顺序相匹配。

有时,只对可访问性树的特定部分感兴趣,或者希望忽略某些动态或无关紧要的属性。为了支持这种情况,Playwright允许我们执行部分匹配,即省略属性或可访问名称,从而仅验证可访问性树的特定部分。

例如,我们可以匹配一个按钮的角色,但不指定其可访问名称(如“提交”,这样无论按钮的标签是什么,测试都会通过。对于具有ARIA属性(如checked或disabled)的元素,省略这些属性也允许进行部分匹配,从而仅关注角色和层次结构。

对于具有动态或可变文本的元素,正则表达式允许我们进行灵活的匹配。可访问名称和文本可以支持正则表达式模式,这使得我们能够匹配具有特定模式的文本,而不是精确值。

例如,如果我们有一个包含当前日期的按钮,我们可以使用正则表达式来匹配任何符合日期格式的文本,而不是硬编码一个特定的日期值。

在Playwright中生成Aria Snapshots有助于确保和维护应用程序的结构。我们可以根据测试设置和工作流程以多种方式生成快照。

1. 使用Playwright代码生成器生成快照

如果我们正在使用Playwright的代码生成器,那么生成Aria Snapshots将变得非常简单。代码生成器提供了一个交互式界面,允许我们为选定的元素自动创建快照断言。这是捕获Aria Snapshot并将其作为记录测试流程一部分的快速方法。

此外,代码生成器界面中的“Aria Snapshot”选项卡还以视觉方式表示选定定位器的Aria Snapshot,使我们能够探索、检查和验证元素角色、属性和可访问名称,以辅助快照的创建和审查。

2. 使用@playwright/test和–update-snapshots标志更新快照

当我们使用Playwright测试运行器@playwright/test)时,我们可以通过运行带有–update-snapshots标志的测试来自动更新快照。此命令将重新生成包括Aria Snapshots在内的断言快照,并替换过时的快照。这对于应用程序结构更改需要新快照作为基线时非常有用。

请注意,Playwright将在拍摄快照之前等待测试运行器配置中指定的最大期望超时时间,以确保页面已稳定。如果在生成快照时测试达到超时,则可能需要调整–timeout。

3. 使用Locator.ariaSnapshot方法生成快照

Locator的aria_snapshot()方法允许我们以编程方式创建定位器作用域内可访问元素的YAML表示。这对于在测试执行期间动态生成快照特别有用。

例如,我们可以编写一个测试来导航到页面的特定部分,并使用aria_snapshot()方法捕获该部分的Aria Snapshot。然后,我们可以验证或存储该快照,以满足我们的测试要求。

为了更好地理解Aria Snapshots,让我们看一些可访问性树的示例。

1. 带有级别属性的标题

标题可以包含一个level属性,指示其标题级别。这对于理解文档结构至关重要。

 

2. 文本节点

独立或描述性文本元素将作为文本节点出现。这些文本节点对于屏幕阅读器等辅助技术来说是非常重要的,因为它们提供了有关页面内容的额外上下文。

 

3. 内联多行文本

多行文本(如段落)在Aria Snapshot中会被规范化。这意味着,无论文本在HTML中是如何分行的,它都会在快照中被视为一个连续的字符串。

 

4. 链接

链接会显示其文本或来自伪元素的组合内容。这对于确保链接的可访问性至关重要,因为屏幕阅读器用户将依赖这些文本来理解链接的目的。

 

5. 文本框

类型为text的输入元素会显示其value属性内容。这对于验证用户输入是否正确捕获到表单中非常重要。

 

6. 带有项目的列表

有序和无序列表都包括其列表项。这些列表项对于组织信息和提供清晰的导航结构至关重要。

 

7. 分组元素

分组捕获嵌套元素,如带有摘要内容的元素。这对于理解复杂页面结构的可访问性非常有帮助。

 
 

常用的ARIA属性(如checked、disabled、expanded、level、pressed和selected)表示控件状态。这些属性对于确保控件的行为符合用户的期望至关重要。

例如,一个带有checked属性的复选框的Aria Snapshot可能如下所示

 

同样,一个带有pressed属性的按钮的Aria Snapshot可能如下所示

最新文章
浦发银行操作指引浦发手机银行「浦发银行操作指引」
1、浦发银行银商转账业务操作指引一、签约1 1、银行柜台发起签约1.11.1个人客户签约银行人员可参照总行浦银发20132013号文关于开
特朗普,盘中突然宣布:暂停!道琼斯大涨近2000点!
戏剧性变化,昨夜,美股大涨。其原因是特朗普突然宣布,已授权对不采取报复行动的国家实施90天的关税暂停。全线大涨纳斯达克指数
城事 | 统筹安排!天津市内六区最新通知!
近日和平区、河西区、南开区、河东区、河北区、红桥区均发布了关于居住证持有人随迁子女小学入学相关通知各区均表示将根据区内公
全功能“六边形”战士,120W+5000mAh续航,iQOO Z7手机评测手机长度「全功能“六边形”战士,120W+5000mAh续航,iQOO Z7手机评测」
2023年3月下旬,iQOO 带来全新的“性能续航小超人”iQOO Z7 系列手机,拥有120W 超快闪充、5000mAh双电芯超大电池以及高通骁龙78
双桥区“红枫·耆德”宣讲团走进丽水社区讲述英雄事迹
3月26日,承德市双桥区“红枫·耆德”宣讲团走进狮子沟镇丽水社区开展宣讲活动,受到居民的热烈欢迎。   电视剧《打狗棍》的作
SView破解版天翼云手机端「SView破解版」
SView破解版是一款专业的3D图纸查看软件,一款能够在手机上一站式随心查阅各个图纸,这里提供了40种不同的格式支持,step、CATPa
KakaoPage安卓手机版6.16.1.2471手机卡拉OK「KakaoPage安卓手机版6.16.1.2471」
- 이용권 사용시 확인 팝업 노출 기능이 설정에 추가 되었습니다. - 무료 및 미보유 회차 소장 기능을 작품홈 회차 리스트에서
鲁医健康说丨每个县至少有1家社区或乡镇卫生院可以提供健康体重管理服务
4月15日上午,山东省卫生健康委员会召开“鲁医健康说”健康知识发布会,就健康体重管理知识进行发布。省卫生健康委基层处副处长
深圳二手房再爆量!
图片来源:微信公众号公共图片库,Pixabay提供(图文无关)深圳楼市3月份的数据出来了。据深房中协发布的数据,2025年3月深圳二