Cypress UI登录后修改邮箱报401未授权如何保存会话数据解决
问题
在执行需要授权的登录测试及邮箱修改功能测试时,修改邮箱需要用到登录流程产生的鉴权数据。先通过UI操作完成登录(输入账号信息后点击登录按钮),之后进入邮箱修改页输入新邮箱,点击确认按钮时触发401 Unauthorized错误,是否可以保存之前登录产生的会话数据来避免该401错误?
解决方案
- 要在Cypress会话之间保存数据,可以在
beforeEach钩子中调用cy.preserveAllCookiesOnce()方法。 - 若需要在
beforeEach钩子中传递API_KEY,可通过cy.intercept实现,相关示例如下:
示例1:拦截匹配指定正则的请求添加请求头
cy.intercept(/e.g: regex to match url /, req => { req.headers['your header'] = true; }); // 拦截所有请求的写法: cy.intercept(/**, req => { req.headers['your header'] = true; });
示例2:携带鉴权头发起cy.request
cy.request({ method: 'GET', url: '', headers: { Authorization: `apikey-v1 ${apiKey}` } }).then(async response => { cy.task('your task').then(task => { cy.get('input[placeholder="Enter code..."]').type(task); }); });
示例3:修改按钮点击触发的请求
cy.contains('Confirm') .click() .then(() => { cy.url().then(urlValue => cy.visit({ url: urlValue, qs: { add params to match condition for regex } }) ); })
内容的提问来源于stack exchange,提问作者Adrian Góra
相关产品推荐
相关产品推荐

