如何在Cypress运行测试前手动访问网页完成前置登录验证
解决方案
1. 提前手动获取有效登录凭证
先在本地普通浏览器(非Cypress启动的测试浏览器)手动完成完整登录流程:通过captcha校验、完成来电手机号核验,登录成功后打开浏览器开发者工具的「Application」面板,复制站点下所有和登录态相关的凭据:
- 所有Cookie(包含
HttpOnly属性的会话类、身份类Cookie,注意记录对应domain、path、过期时间等参数) - LocalStorage中存储的token、用户标识等字段
- SessionStorage中存储的临时身份校验字段
2. 配置全局前置钩子注入登录态
在Cypress测试用例的before全局钩子中添加注入逻辑,测试启动前就把登录态写入测试环境,无需触发登录交互:
- 注入Cookie使用内置方法
cy.setCookie('cookie名称', 'cookie值', { domain: '你的站点域名', path: '/', httpOnly: true }),参数和你从浏览器复制的保持一致 - 注入LocalStorage使用:
cy.window().then(win => win.localStorage.setItem('字段名', '对应的值')) - 注入SessionStorage将上述代码的
localStorage替换为sessionStorage即可
3. 调整测试用例的启动逻辑
所有测试用例无需从登录页启动,直接用cy.visit('你要测试的目标页面路径')访问对应页面即可,Cypress会携带提前注入的登录态完成访问,不会触发登录校验流程。
之前测试中断的原因说明
Cypress默认是自动化时序控制,测试执行过程中不会等待人工交互,中途手动操作会打断命令执行队列,导致后续命令超时或执行失败,因此不要在测试运行阶段做人工操作,提前注入登录态再启动测试即可。
内容的提问来源于stack exchange,提问作者fennyflop
相关产品推荐
相关产品推荐

