分享好友 最新资讯首页 最新资讯分类 切换频道
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可能如下所示

最新文章
视觉科技“独角兽”力方集团执行总裁陈方前:成都是文化宝库,素材根本挖不完
走进力方数字科技集团有限公司(以下简称“力方集团”)展厅,仿佛置身科幻世界:穿越动感影院、创意魔法墙、全息餐桌……裸眼3D
1枚比特币涨至72万元,美图炒币大赚5亿多,专家提醒风险
比特币价格突破10万美元大关之时,有公司选择全面出清。12月4日晚间,发布公告称,自2024年11月美图已开始在市场上出售其已购买
腾讯:AI能力全面开放,全面适配主流国产芯片
9月16日,在2025腾讯全球数字生态大会主峰会上,面对各界关注的算力问题,腾讯集团副总裁、腾讯云总裁邱跃鹏宣布,目前腾讯云已
篮球——NBA常规赛:勇士胜雷霆
当日,在2024-2025赛季NBA常规赛中,主场116比109战胜。1月29日,演员们在比赛中场休息时表演舞蹈庆祝春节。新华社发(董旭东摄
【硬件资讯】坏的要来了??闪迪之后,其他NAND厂商也将提高定价,国产也不能幸免??
近日有报道称,闪迪(Sandisk)将从4月1日起提高NAND闪存的价格,覆盖企业端和客户端的产品,整体涨幅超过了10%。闪迪预计市场很
播客|段志强谈王朝龙脉与风水堪舆
江西堪舆风水术的兴盛程衍樑刚刚段老师提到在宋代,福建、江西就已经是一个风水师的大本营了,直到今天都是这样。我们之前的节目
中概股普遍上涨
周三,美国股市迎来了反弹,经过连续两天的下跌后,投资者对于总统特朗普有可能向汽车制造商提供豁免的消息抱有希望,认为这可能
瑕不掩瑜的香港置地,销售大比例倚靠上海项目
在文章的开头,先送一句千亿哥最爱的《喜剧之王》中尹天仇经典台词给到香港置地上海以外的城市公司,你们可要——“努力,奋斗!
70多家用人单位招聘千余人!就在本周六
1.南亚新材料科技股份有限公司招聘岗位:普工、检验员、储备干部2.上海雷普电气有限公司招聘岗位:检验员、车间文员、男女普工3.
云顶之弈澳门公开赛正式起航!四大精彩活动等你来嗨!
《云顶之弈澳门公开赛》(TFT Macau Open,简称TMO),是由拳头游戏举办的全球性的、的玩家赛事和聚会。首届赛事于去年底在美国