Bra*_*mer 6 javascript cypress
我正在使用 cypress 在我公司的网站上进行自动化测试,登录后,单击任何交互式元素都会立即将我注销。然而,这只是当我通过赛普拉斯运行它时。手动点击仍然有效。我可以做什么来解决这个问题?
这是一个用 javascript 构建的网站。
我希望该网站不会将我注销。
describe('signing in', function() {
it('Visits the safe and reliable sign-in page', function() {
cy.visit('https://testing.safeandreliable.care/sign-in')
cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
cy.get('[id="at-field-password"]').type('******')
cy.contains('Sign In').click()
})
it('signs into the default entity', function(){
cy.get('[id="help-text-board"]').click({force:true})
cy.wait(9000)
})
})Run Code Online (Sandbox Code Playgroud)
您应该知道的是,Cypress 每次启动新的 .NET 浏览器时都会清除浏览器的状态it()。因此,在第一个中所做的事情it()现在在第二个中已经不存在了it()。在您的情况下,登录是在第一个它,在第二个它应用程序不再登录。为了确保 Cypress 保持登录状态,您应该将登录步骤移至 abefore()或 a beforeEach()(取决于您是想每个描述还是每个它登录一次。
在您的帖子之后,您似乎喜欢登录一次并保持登录状态,因此它before()可以为您完成这项工作。你的代码看起来像这样:
describe('signing in', function() {
before('Logijn to the application', function() {
cy.visit('https://testing.safeandreliable.care/sign-in')
cy.get('[id="at-field-username_and_email"]').type('bcramer@safeandreliablecare.com')
cy.get('[id="at-field-password"]').type('******')
cy.contains('Sign In').click()
})
it('signs into the default entity', function(){
cy.get('[id="help-text-board"]').click({force:true})
cy.wait(9000)
})
it('next test', function () {
// do other test but still logged in
})
})
Run Code Online (Sandbox Code Playgroud)