我正在尝试使用赛普拉斯在两个不同的域之间复制元素的值。
但是,赛普拉斯不允许我在同一测试中访问两个不同的域,我不确定如何将值复制到另一个测试中。
我的代码如下:
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()
})
})
答案 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函数保存的变量。 可以在测试中使用。