使用时收到以下错误消息:“ 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);
});
答案 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())