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

最新文章
游戏比赛,没人看了?
作者|小冬2001年,在韩国汉城会展大厅举办的首届世界电子竞技大赛(WCG),吸引了来自37个国家与地区的430名参赛者。在《星际争
空天信息产业版图基本拼全!看济南的“星箭双造”能力|卫星|航天|火箭|遥感_网易新闻
近日,济南商业航天领域动作频频。第八届中国(济南)新动能创新创业大赛上,济南发起设立总规模50亿元空天信息产业基金;山东省商
龙川又添休闲娱乐新地标,多元活动引得人气“爆棚”!|湿地公园|东江|川东|乡村_网易新闻
当前正是出游踏青、拥抱自然的绝佳时节龙川东江湿地公园星空营地正以全新面貌迎接八方游客该公园凭借其得天独厚的地理位置丰富多
NBA单场35分!戴维斯有望登陆CBA!_腾讯新闻
近日,CBA转会市场传来重磅消息:前NBA萨克拉门托国王队得分后卫特伦斯·戴维斯二世(Terence Davis II)的经纪人已正式向多支CB
NVIDIA RTX 加速 PC 端 4K AI 视频生成,LTX-2 与 ComfyUI全面升级_腾讯新闻
2025 年是 PC 端 AI 发展的突破之年。PC 级小语言模型 (SLM) 的准确率相比 2024 年提高近 2 倍,显著缩小与前沿云端大语言模型 (
有望被险资关注的高股息板块
当保险行业全面迈向新会计准则,一个看似晦涩的科目FVOCI,正悄然改写险资的资产配置逻辑。在新准则下,保险公司若将股票划分为F
全面盘活“阴间文化”,网易这步棋太妙了_腾讯新闻
在中国,涉及鬼怪的话题总是被人禁忌,又让人充满好奇。这种好奇突破了时间的枷锁,从一千多年前的《搜神记》到清朝的《聊斋志异
寰行盛世香港专才怎么样?靠谱吗?2025最后窗口期助你弯道超车!|签证|永居|入境处_网易新闻
香港专才计划正以"低门槛、高通过率、全家受益"三大优势,成为内地职场精英突破职业瓶颈的关键路径。作为香港入境处认证的专业机
优秀案例|工商银行:企业管家云赋能企业数字化转型_腾讯新闻
编者按自2022年案例库启动以来,中关村互联网金融研究院已收录全国300+金融科技标杆实践,覆盖人工智能、区块链、大数据等前沿技
2026 年 1 月床垫品牌测评:保护脊椎 + 改善睡眠浅 中外中高端主卧床推荐_腾讯新闻
中国睡眠研究会《2026 中国睡眠健康白皮书》显示,超 75% 成年人存在睡眠不好、睡眠浅或睡眠质量差的问题,其中 68% 明确表示床