如何使用赛普拉斯将文本框中的值存储在另一个变量中

How to store the value from text box in another variable using Cypress

name="titleEn" data-testid="edit-category-title-en" type="text" placeholder="输入类别标题" value="vxfifyem"

根据目的,有几种方法可以做到:

  1. 全局范围变量:(错误做法
  let myValue;

  before(()=> {
     cy.get('[data-testid="edit-category-title-en"]').then($el => {
        myValue = $el.text();
     })
  })

  it(()=> {

    cy.log(myValue) // myValue is now available

  })

但是,正如您所见,回调和变量调用不能在同一范围内使用,否则变量将为空。

如果您在公共范围内需要它,那么您可以使用 Cypress.Promise 实用程序,因此 Cypress 将不会继续,直到承诺得到解决。

  it('', async () => {
     const myValue = await new Cypress.Promise((resolve) => {
        cy.get('[data-testid="edit-category-title-en"]')
            .invoke('text')
            .then((txt) => resolve(txt.toString()))
     })
  })
  cy.log(myValue) // myValue is available
  1. 使用赛普拉斯别名(最佳实践

我建议先抛出文档:Cypress Variables and Aliases

cy.get('[data-testid="edit-category-title-en"]').invoke('text').as('myValue');

那么您可以通过以下方式调用它:cy.get('@myValue')