创建用于在打字稿中获取文本的赛普拉斯自定义命令
Creating a cypress custom command for getting text in typescript
我正在开发一个赛普拉斯项目,我正在尝试创建一个自定义命令
它解决了传递的定位器上的承诺和 returns 文本。
export default class QuickRegisterPage {
emailAddressText() {
return cy.get('#emailAddress');
}
public createNewUser() {
cy.getQuickRegisterUrl().then(url => {
cy.visit(url);
text = cy.getText(this.emailAddressText());
cy.log(text);
});
}
Cypress.Commands.add(
'getText',
(element: Cypress.Chainable<JQuery<HTMLElement>>) => {
element.scrollIntoView();
element.then(ele => {
const text = ele.text();
return text;
});
}
);
declare namespace Cypress {
interface Chainable<Subject = any> {
getText(element: Cypress.Chainable<JQuery<HTMLElement>>): string;
}
}
当我打电话给 cy.getText()
时什么也没发生,它只是坐在那里不返回文本。
谁能帮我解决这个问题。
cy 命令是异步的,因此您应该在 then 块中访问它的结果。从技术上讲,您可以 return 来自 cy 自定义命令的字符串,但不推荐这样做,因为 api 一致性。
declare namespace Cypress {
interface Chainable {
getText(): Chainable<string>;
}
}
Cypress.Commands.add('getText', { prevSubject: 'element' },
($element: JQuery<HTMLElement>) => {
cy.wrap($element).scrollIntoView()
return cy.wrap($element).invoke('text')
}
)
如何使用
cy.get('#emailAddress')
.getText()
.then(text => console.log('Email Address ', text))
我正在开发一个赛普拉斯项目,我正在尝试创建一个自定义命令 它解决了传递的定位器上的承诺和 returns 文本。
export default class QuickRegisterPage {
emailAddressText() {
return cy.get('#emailAddress');
}
public createNewUser() {
cy.getQuickRegisterUrl().then(url => {
cy.visit(url);
text = cy.getText(this.emailAddressText());
cy.log(text);
});
}
Cypress.Commands.add(
'getText',
(element: Cypress.Chainable<JQuery<HTMLElement>>) => {
element.scrollIntoView();
element.then(ele => {
const text = ele.text();
return text;
});
}
);
declare namespace Cypress {
interface Chainable<Subject = any> {
getText(element: Cypress.Chainable<JQuery<HTMLElement>>): string;
}
}
当我打电话给 cy.getText()
时什么也没发生,它只是坐在那里不返回文本。
谁能帮我解决这个问题。
cy 命令是异步的,因此您应该在 then 块中访问它的结果。从技术上讲,您可以 return 来自 cy 自定义命令的字符串,但不推荐这样做,因为 api 一致性。
declare namespace Cypress {
interface Chainable {
getText(): Chainable<string>;
}
}
Cypress.Commands.add('getText', { prevSubject: 'element' },
($element: JQuery<HTMLElement>) => {
cy.wrap($element).scrollIntoView()
return cy.wrap($element).invoke('text')
}
)
如何使用
cy.get('#emailAddress')
.getText()
.then(text => console.log('Email Address ', text))