angular dom 中未显示 Cypress 数据属性
Cypress data attribute doesn't show up in angular dom
我正在尝试将 Cypress 实施到我的 angular 项目中,并使用 data-cy 属性,但它们的行为非常不一致。在某些地方,该属性确实显示在 dom 中,但在其他地方则没有。
未显示的示例:
<mat-radio-button
*ngFor="let opt of question.options"
[attr.data-cy]="question.key + '-' + opt.key"
[value]="opt.key">
{{opt.value}}
</mat-radio-button>
确实显示了 value 属性,所以有些东西起作用了。我尝试了不同的处理方法,例如删除括号,删除 attr.
(但我知道这根本不起作用),并给出一个不同的值作为仅表示 test
[=16 的字符串=]
它起作用的例子:
<fa-icon class="logoutButton" [attr.data-cy]="'profile-button'"></fa-icon>
对我做错了什么有什么想法吗?
有些库将属性限制为已发布的 API,但您始终可以使用 arialabel
而不是 data-cy
,因为主要库都支持屏幕阅读器。
该属性出现在最外层的元素上。
来源
<mat-radio-button ariaLabel="test2" [value]="2">Select me</mat-radio-button>
HTML
<mat-radio-button
arialabel="test2"
class="mat-radio-button mat-accent mat-radio-checked"
ng-reflect-value="2"
...
测试
cy.get('mat-radio-button[arialabel="test2"]')
@Input('aria-label')
ariaLabel: string
Used to set the 'aria-label' attribute on the underlying input element.
备注
HTML 属性全部为小写字符 arialabel
,即使输入属性具有 camel-case
aria-label
在文档中显示用于装饰器 @Input('aria-label')
,但不是在属性
中使用的形式
当然,对于 ng-for
,您可以使用唯一的密钥,例如 ariaLabel="question.key + '-' + opt.key"
我正在尝试将 Cypress 实施到我的 angular 项目中,并使用 data-cy 属性,但它们的行为非常不一致。在某些地方,该属性确实显示在 dom 中,但在其他地方则没有。
未显示的示例:
<mat-radio-button
*ngFor="let opt of question.options"
[attr.data-cy]="question.key + '-' + opt.key"
[value]="opt.key">
{{opt.value}}
</mat-radio-button>
确实显示了 value 属性,所以有些东西起作用了。我尝试了不同的处理方法,例如删除括号,删除 attr.
(但我知道这根本不起作用),并给出一个不同的值作为仅表示 test
[=16 的字符串=]
它起作用的例子:
<fa-icon class="logoutButton" [attr.data-cy]="'profile-button'"></fa-icon>
对我做错了什么有什么想法吗?
有些库将属性限制为已发布的 API,但您始终可以使用 arialabel
而不是 data-cy
,因为主要库都支持屏幕阅读器。
该属性出现在最外层的元素上。
来源
<mat-radio-button ariaLabel="test2" [value]="2">Select me</mat-radio-button>
HTML
<mat-radio-button
arialabel="test2"
class="mat-radio-button mat-accent mat-radio-checked"
ng-reflect-value="2"
...
测试
cy.get('mat-radio-button[arialabel="test2"]')
@Input('aria-label') ariaLabel: string
Used to set the 'aria-label' attribute on the underlying input element.
备注
HTML 属性全部为小写字符
arialabel
,即使输入属性具有 camel-case
中使用的形式aria-label
在文档中显示用于装饰器@Input('aria-label')
,但不是在属性
当然,对于 ng-for
,您可以使用唯一的密钥,例如 ariaLabel="question.key + '-' + opt.key"