亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建用于在打字稿中獲取文本的 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 關注
  • 231 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號