在cypressIO中使用别名时出现错误消息

时间:2018-12-11 14:18:49

标签: cypress

使用时收到以下错误消息:“ TypeError:无法读取未定义的属性'text'”

我完全按照文档https://docs.cypress.io/guides/core-concepts/variables-and-aliases.html#Aliases

中的说明进行操作。

有人可以看到我在做什么吗?

beforeEach(() => {
    cy.visit('http://localhost:4200/');
    loginPage.login();
    timeFilter.button.click();
    cy.get('#title').invoke('text').as('text');
  });

  it('should show text', () => {
    console.log(this.text);
  });

2 个答案:

答案 0 :(得分:2)

阅读赛普拉斯文档,我所遇到的问题是使用箭头函数,并且我没有使用.then()在闭包中访问别名。我一这样做,它就会起作用:

cy.get('#title').invoke('text').as('text');

it('should show text', () => {
    cy.get('#main').then(function () {
      console.log(this.text);
    });
  });

或在function()回调中使用() =>代替it()

cy.get('#title').invoke('text').as('text');

it('should show text', function() {
  console.log(this.text);
});

答案 1 :(得分:1)

文本一直是柏树的痛苦。这可能是几件事之一:

1)有时this.alias无效,请尝试使用: cy.get('@text').then(text => console.log(text));

2)如果文本包含在#title下的元素中,则必须获取该特定元素。例如,#title可能是一个div,其中包含一个h1元素,因此在这种情况下,您需要使用#title > h1作为选择器。发布您的HTML,我就能确定是否是这种情况

3)invoke('text')几乎不起作用,我不确定为什么。我发现这种方法更常见cy.get('#title').then($el => el.text())