赛普拉斯-如何从站点注销

时间:2019-08-19 14:29:20

标签: javascript testing automation automated-tests cypress

如果您已登录,赛普拉斯是否有可能从页面注销?还是要检查我是否已登录?

我的问题是,如果我正在浏览器中运行一个测试,则赛普拉斯总是需要登录。但是,如果我从cmd启动它,则仅需要登录第一个测试,而在下一个测试中,您已经登录了登录。

// Visit the site
cy.visit(
  "https://zeteodemo.uat.creasoft.cz/login?ReturnUrl=%2fVehicleInsuranceV2%2fCompare%3fOsobniCislo1%3d1%26ProductsFilter%3dAXA-ONLINE"
);

// Enter username
cy.get(".login__username")
  .type("tester")
  .should("have.value", "tester");

// Enter password
cy.get(".login__password")
  .type("1")
  .should("have.value", "1");

// Click the login button
cy.get(".button-login").click();

1 个答案:

答案 0 :(得分:4)

我已经在多种环境下运行了赛普拉斯测试,其中之一存在登录状态问题。删除Cookie有时会有所帮助,但并非总是如此。因此,为了保持测试的稳定性,我决定创建一条if语句(这本身并不是最佳实践),以使其尽快进入已知的应用程序状态。

我所做的是在每个可能使用登录名的beforeEach()中使用下面的自定义命令:

Cypress.Commands.add('login', function () {
    cy.get('body').then($body => {
        if ($body.find('.user-profile-name').length === 1) {
            cy.log('Already logged in')
        } else {
            cy.get('.login-button').click()
        }
    })
})

该操作是检查浏览器是否已经登录,因为.user-profile-name应该存在。如果不存在,则浏览器将无法登录,因此赛普拉斯需要单击.login-button按钮。