为了账号安全,请及时绑定邮箱和手机立即绑定

创建用于在打字稿中获取文本的 cypress 自定义命令

创建用于在打字稿中获取文本的 cypress 自定义命令

斯蒂芬大帝 2021-12-12 10:50:09
我正在处理一个 cypress 项目,我正在尝试创建一个自定义命令,该命令解析承诺并在传递的定位器上返回文本。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()什么也没发生,它只是坐在那里而不返回文本。有人可以帮我解决这个问题吗?
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

cy 命令是异步的,所以你应该在then块中访问它的结果。从技术上讲,您可以从 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))


查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信