从赛普拉斯访问 DOM 元素的 Angular 属性

Access Angular property of a DOM element from Cypress

我有一个 Angular 应用程序,其中有一个像这样的容器:

<div id="my-container" [data-version]="version$ | async">

我已经添加了 data-version 属性 专门用于我的 Cypress 测试,所以我会知道我需要测试做什么的某些细微差别。

但是,我很难找到访问该值的正确咒语。这是我尝试过的:

首先,我们称上面的行为 flavor A 和这个没有括号的版本 flavor B:

<div id="my-container" data-version="version$ | async">

然后我尝试了 3 种口味的 Cypress:

cy.get('#my-container')
  .its('data-version') // Flavor 1
  .then((version) => {
    console.log(version);
  }

cy.get('#my-container')
  .should('have.attr', 'data-version') // Flavor 2
  .then((version) => {
    console.log(version);
  }

cy.get('#my-container')
  .invoke('attr', 'data-version') // Flavor 3
  .then((version) => {
    console.log(version);
  }

结果:

问题:有没有办法从赛普拉斯检索 Angular 属性?

Flavor B 是不行的,表达式不会被求值,你只需绑定一个字符串。

您应该使用以下语法:

[attr.data-version]="version$ | async"

这已记录在案 here