抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

背景

上文说了封装登陆为方法,是打开登陆页面输入用户名和密码登陆的,但其实登陆不是我们所关心的,那么既然登陆不是重点关注的点,在ui层面可以不考虑,cypress使用request来实现接口登陆并获取cookie,然后带着cookie去访问页面。

request用法官方文档地址:https://docs.cypress.io/api/commands/request.html#Options

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
const getIframeDocument = () => {
return cy
.get('iframe的id') // #+id
.its('0.contentDocument')
};

const getIframeBody = () => {
// get the document
return getIframeDocument()
.its('body').should('not.be.undefined')
.then(cy.wrap)
};

//很多时候要用到登陆,我们把登陆简化以下。
Cypress.Commands.add('login', () => {
const accountTypes = { // 根据不同环境设置账号类型
pre:{
username: '用户名',
password: '密码hash',
}
}

cy.request({
url: '登陆接口url',
method: 'GET',
form: true,
param:accountTypes['pre'] // 使用 pre 账号登录(跳过 UI 的登录)
}).then(function ($res) {
console.error($res)
})
});

Cypress.Commands.add('visitBillList', ()=>{
cy.fixture().then(urls=>{
cy.visit('某列表页')
})
});


describe('快速登陆',function(){

beforeEach(()=>{
//
cy.login().wait(4000)
cy.visitBillList().wait(4000)

})


it('新建XX单', () => {
getIframeBody().contains('新建XX单').click();
})

})

参数说明

log true 命令日志中显示命令
url null 发出请求的URL
method GET 请求中使用的HTTP方法
auth null 添加授权标头。接受这些选项。
body null 随请求一起发送的正文
failOnStatusCode true 是否在除2xx和之外的其他响应代码上失败3xx
followRedirect true 是否自动跟随重定向
form false 是否将body值转换为url编码的内容并设置x-www-form-urlencoded标题
gzip true 是否接受gzip编码
headers null 要发送的其他标题;接受对象文字
qs null 查询参数追加到url请求的
retryOnStatusCodeFailure false cypress是否在后台自动重试错误状态代码。如果设置为true,赛普拉斯将最多重试请求4次。
retryOnNetworkFailure true cypress是否应在后台自动重试瞬态网络错误。如果设置为true,赛普拉斯将最多重试请求4次。
timeout responseTimeout 等待超时cy.request()之前解决的时间

评论