分享好友 最新资讯首页 最新资讯分类 切换频道
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.使
Qt Group:AI赋能的HMI敏捷开发——Qt框架如何重构舱驾融合新范式
2025年3月19日,在第五届中国汽车人机交互与体验设计创新大会上,Qt Group中国商务拓展经理高森介绍了Qt框架在汽车行业的广泛应
追忆演员童正维:编辑部牛大姐、雅各布姥姥等角色成一代经典
据著名摄影师马良4月15日晚发布的讣告,其母亲、老艺术家童正维因心脏衰竭医治无效,于4月14日22时52分,在家人的陪伴下安然离世
手机电脑互传 V1.0.4手机互传「手机电脑互传 V1.0.4」
没有加固或未知加固CHANGE_WIFI_STATE改变WiFi状态INTERNET访问网络连接,可能产生GPRS流量ACCESS_WIFI_STATE获取当前WiFi接入的
“携宠游”的风吹到了常州!茅山森林世界宠物踏青季火热进行中
春意渐浓,宠物的撒欢之旅也超萌登场!近日,一场专属于“毛孩子”的春日派对——由茅山森林世界主办的“宠物春日友好会”,在众
明明应该领便当,却被作者强行复活,你知道他们都是谁吗?
在动漫火影忍者中,有很多忍者拥有他们非常鲜明的人物特点,但是也有一部分忍者,他们本来早就应该死亡了,但是因为一些特殊原因
Weinre 远程调试移动端手机web页面天翼云手机端「Weinre 远程调试移动端手机web页面」
Weinre 是一款远程调试工具,使用JS编写, 可以让我们在电脑上直接调试运行在手机上的远程页面,当你的代码已经发布上线,这时候
如果iPhone掉进水里了,把手机插入大米中有用吗大米手机「如果iPhone掉进水里了,把手机插入大米中有用吗」
当iphone掉入水中时,很多人会选择将手机插入大米中,希望这样能够拯救手机。然而,这种做法是否真的有效呢?首先,让我们来看看
拍照党怎么选手机?OPPO、华为、三星出手了,哪家好你说了算!手机党「拍照党怎么选手机?OPPO、华为、三星出手了,哪家好你说了算!」
近几年的国产技术可以说是遍地开花,从影像、续航到处理器都很有看点,其中,影像更是成为各大手机厂商的必争之地,像OPPO和华为