javascript - Cypress before hook 在每个 it 语句之后重复
问题描述
我是赛普拉斯的新手,当使用 before 钩子转到 url 时,它完成了第一个 it 语句,然后它再次执行 before 钩子并执行第二个 it 语句,一旦执行 it 语句并停止,它应该执行 before 钩子。然而,这不是正在发生的事情,我需要帮助,看看我做错了什么。我的代码如下:
import { expect, assert, should } from 'chai';
import LoginPage from '../page-objects/LoginPage.spec'
import BeHomePage from '../page-objects/BeHomePage.spec'
describe('create, edit, delete Survey', () => {
before(function() {
cy.visit(''); // see config json for base url
})
it('user can login to boardeffect', () => {
LoginPage.getLoginUserName().type(Cypress.env('username'));
LoginPage.getLoginUserPassword().type(Cypress.env('password'));
LoginPage.getSigninButton().click();
})
it('user can navigate to collaborate', () => {
BeHomePage.getAutoBeWorkroom().should('be.visible');
BeHomePage.getAutoBeWorkroom().click();
BeHomePage.getCollaborate().should('be.visible');
BeHomePage.getCollaborate().click();
cy.wait(10000)
})
})
{
"baseUrl": "https://automation-ozzie.boardeffect.com/login",
"defaultCommandTimeout": 15000,
"env": {
"username": "steveSystem",
"password": "Passw0rd"
}
}
类 BeHomePage {
getAutoBeWorkroom() {
return cy.get(':nth-child(7) > a')
}
getCollaborate(){
return cy.get('.workroom-buttons > :nth-child(4) > a')
}
getNewSurvey(){
return cy.get('btn btn-success')
}
} 导出默认新 BeHomePage();
如下图所示,一个 (it) 块中的所有代码都通过了,如图所示,但是 2 it 块中的代码如上所示失败。
解决方案
您需要的额外步骤在文档Cookies - Preserve Once的本节中进行了讨论。
赛普拉斯会自动清除每个 cookie 之间的 cookie it()
,但如果您添加
it('user can login to boardeffect', () => {
LoginPage.getLoginUserName().type(Cypress.env('username'));
LoginPage.getLoginUserPassword().type(Cypress.env('password'));
LoginPage.getSigninButton().click();
// preserve the cookie set above for the next test
Cypress.Cookies.preserveOnce('_boardeffect_session');
})
它将在后续it()
部分中保留该 cookie 值。
打开浏览器开发工具,进入应用程序、Cookies、https://automation-ozzzie.boardeffect.com并观察没有preserveOnce()
清除 cookie 值。
推荐阅读
- api - Golang HTTP 请求返回 200 响应但正文为空
- reactjs - React - 从高阶函数调用包装的组件回调
- python - 删除 1 行中的 b'、\r、\n'
- java - Java 线程池是如何工作的?
- windows-subsystem-for-linux - 使用 Windows-pinyin IME 将中文输入 VcXsrv(或其他 X 服务器)
- java - 使用自定义逻辑比较 2 个 java 列表
- python - Django 2.1 创建自动表
- windows-error-reporting - 如何为我的应用程序 (cpp) 重新激活 Windows 错误报告?(视窗 10)
- ddev - 当 ddev 配置为使用 apache 时,为什么我会看到 nginx 标头?
- bash - 如何通过具有默认 csh shell 的 ssh 远程执行交互式多行 bash 脚本?