我试图绕过用户界面登录使用柏树与黄瓜。我在Cypress.Commands.add(login)
方法中加入了cy.session
。但是当我试图执行脚本时,在场景文件的每个步骤中清除会话。例:
Feature: Login
Scenario: Validate Login
Given Launch the URL And Login With Valid Credentials
When Login With Correct Username and Password
Then Verify Manage Home Page
在上述场景中,会话在每个步骤中都是清空的,如Given, When, Then
。我需要在特征文件中的每个场景后清除。请帮我解决这个问题
Cypress.Commands.add('login', (username, password) => {
cy.session([username, password], () => {
cy.visit('/')
cy.get(selectors.user_input,{ timeout: 60000 }).type(username)
cy.get(selectors.login_button, { timeout: 60000 }).should('be.visible')
cy.get(selectors.login_button).click()
cy.wait(2000)
cy.get(selectors.password_input, { timeout: 60000 }).should('be.visible')
cy.get(selectors.submitButton, { timeout: 60000 }).should('be.visible')
cy.get(selectors.password_input).type(password)
cy.get(selectors.submitButton).click()
cy.get(selectors.homePage, { timeout: 60000 }).should('be.visible')
})
})
或者,请帮助我如何在功能文件中的每个场景中避免登录。
您是否尝试将登录功能放入beforeEach
?
这就是我如何使用cy.session:
describe('...', () => {
beforeEach(() => {
cy.login()
})
it('test a', () => {
...
})
...
})
{{edit}}第二种可能是保留cookie以保持登录:
describe('...', () => {
beforeEach(function () {
cy.preserveAllCookiesOnce()
})
it('test a', () => {
...
})
...
})