Cypress 如何绕过同源策略登录

最近用Cypress做页面自动化的时候遇到一个问题,前端页面网站与后台登录接口的网站,不属于同一个域名下。

从页面上点击登录按钮之后会报出访问登录接口的请求被cancel,原来的代码如下:

describe('My test case', function () {

    it.only('visit home page and sign in', function () {
        cy.visit('https://portal-dev.keyid.cn/login') //访问登录地址
        cy.get('.el-button').click()                //点击登录按钮
        cy.visit('https://portal-dev.keyid.cn/home')  
    })
}) 

报错如截图所示:

解决办法是用cy.request请求直接调用登录接口

describe('My test case', function () {
    before('sign in', function(){
        cy.request({
            method: 'POST',
            url: 'https://api-dev.keyid.cn/scrm-api/admin/auth/login',
            form: true,
            body: {
                account: "17717823623",
                password: "password"
            },
        })
    })

    it.only('visit home page', function () { 
        cy.visit('https://portal-dev.keyid.cn/home')
    })
})  

 但是home页面仍然没有正常显示,查看一下Cookies、Local Storage和Session Storage,可以发现cookies已经被设置上了值,其他两项都是空白的。

手动登录一下该网站,查看一下Cookies、Local Storage和Session Storage,可以发现Local Storage里面有2个值,Session Storage里面没有值。

只需要在登录成功后通过window.localStorage.setItem增加一下local storage就行。因此最终代码如下:

describe('My test case', function () {
    before('sign in', function(){
        cy.request({
            method: 'POST',
            url: 'https://api-dev.keyid.cn/scrm-api/admin/auth/login',
            form: true,
            body: {
                account: "17717823623",
                password: "password"
            },
        }).then(resp => {
            const localStorage_1 = { "expire": -1, "val": resp.body.data }
            const localStorage_2 = { "expire": -1, "val": `${resp.body.data.login_token}` }
            window.localStorage.setItem('ark-zw-scrm-session', JSON.stringify(localStorage_1))
            window.localStorage.setItem('admin-auth-token', JSON.stringify(localStorage_2))
        })
    })

    it.only('visit home page', function () { 
        cy.visit('https://portal-dev.keyid.cn/home')
    })
})  

至此就可以正常显示页面啦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值