gpt4 book ai didi

javascript - 创建用于在 typescript 中获取文本的 Cypress 自定义命令

转载 作者:行者123 更新时间:2023-11-29 18:38:51 28 4
gpt4 key购买 nike

我正在开发一个 Cypress 项目,我正在尝试创建一个自定义命令它解析 promise 并在传递的定位器上返回文本。

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 block 中访问它的结果。从技术上讲,您可以从 cy 自定义命令返回一个字符串,但由于 api 一致性,不推荐这样做。

我会写成 a child custom command

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

关于javascript - 创建用于在 typescript 中获取文本的 Cypress 自定义命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650317/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com