如何使用赛普拉斯在域之间复制对象的值?

时间:2019-06-25 11:56:14

标签: javascript cypress

我正在尝试使用赛普拉斯在两个不同的域之间复制元素的值。

但是,赛普拉斯不允许我在同一测试中访问两个不同的域,我不确定如何将值复制到另一个测试中。

我的代码如下:

  it('Gets MFA Token', () => {

//define String
var password = 'Password';

//Encode the String
var encodedString = btoa(password);
console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"

// Decode the String
var decodedString = atob(encodedString);
console.log(decodedString); // Outputs: "Password"

// Visit token retrieval page
cy.visit('https://totp.danhersam.com')

// Fill in token secret
cy.get('#app > div > div:nth-child(2) > div > input').type('TOKENTHINGYVALUE')

// Retrieve mfa token
cy.get('#app > div > div.box > p').then(($token) => {

// Store the token's text
const mfatoken = $token.text()

 })
})

it('Uses MFA Token', () => {

// Visit MFA login page
cy.visit('https://mydomain/mfa_test.html')

// Fill in credentials
cy.get('#uid').type('username')
cy.get('#password').type(password)
cy.get('#form > div:nth-child(7) > div > div > input').click()

// Fill in mfatoken
cy.get('#otppswd').type(mfatoken)
cy.get('#main > div > div > form > div.section > div > input').click()

   })
  })

1 个答案:

答案 0 :(得分:0)

我找到了方法。

我如下解决了该问题:

在第一个测试中检索MFA令牌的测试中,我使用了Cypress随附的.as函数(请参见其Aliasses文档)

// Retrieve mfa token
cy.get('#app > div > div.box > p').as('mfatoken')

在我希望再次使用此令牌的下一个测试中,我将其命名如下。

// Fill in mfatoken
cy.get('#otppswd').type('@mfatoken')

请注意@符号,它调用使用.as函数保存的变量。 可以在测试中使用。