将别名与cypressIO一起使用时出现错误消息

将别名与cypressIO一起使用时出现错误消息,cypress,Cypress,使用时,我收到以下错误消息:“TypeError:无法读取未定义的属性'text'” 我所做的与他们在文档中所做的完全一样: 有人能看出我做错了什么吗 beforeEach(() => { cy.visit('http://localhost:4200/'); loginPage.login(); timeFilter.button.click(); cy.get('#title').invoke('text').as('text'); }); i

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

我所做的与他们在文档中所做的完全一样:

有人能看出我做错了什么吗

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);
  });

文字一直是柏树上的痛。这可能是以下几件事之一:

1) 有时此别名不起作用,请尝试使用:
cy.get('@text')。然后(text=>console.log(text))

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


3)
invoke('text')
几乎不起作用,我不知道为什么。我发现这种方法更有效。
cy.get(“#title”)。然后($el=>el.text())

阅读cypress文档,我遇到的问题是使用箭头函数,我没有使用.then()访问闭包中的别名。我一做到这一点,它就起了作用:

cy.get('#title').invoke('text').as('text');
它('应该显示文本',()=>{
cy.get('#main')。然后(函数(){
console.log(this.text);
});
});
或者在
it()
回调上使用
function()
而不是
()=>

cy.get('#title').invoke('text').as('text');
它('应该显示文本',函数(){
console.log(this.text);
});

这是可行的,但只要我尝试将el.text()赋值给一个变量,并在链之外访问它,我就会得到未定义的值<代码>变量文本
cy.get('#title')。然后($el=>text=el.text())
console.log(text)
,这是因为cypress是异步的。将尝试使用
文本
变量的代码移动到
块中。然后()。或者将其设置为
before()
beforeach()
块中的
text
变量-这些变量将在测试开始之前完成执行。您找到了主要问题-在
it()
回调中使用
function()
而不是
()=>
解决了问题,正如Cypress文档所示。