赛普拉斯发送多个请求并且不允许登录

我正在使用Cypress 4.3.0版本,baseUrl = " https://tenant-demo.somesitedev.net " 已在 cypress.json 文件中设置。当我发送cy.request()命令时,它正在发送多个请求(请参见图:1)。此外,当我观察访问命令时,我可以看到原始 URL、已解析 URL 和重定向。在这种情况下,我如何使用cy.request()命令登录到站点。


before(()=>{

    cy.visit('/').then(()=>{

        cy.get('input[type="hidden"]').invoke('val').then((val)=>{

                const token = val;

                cy.login(token);

        }) 

     })


    }) 


Cypress.Commands.add('login', (token) => {

    const username= 'test1.user';

    const password= 'somepassword';

    const accessToken = localStorage.getItem('tokens');

    const cookieValue = document.cookie.split(';');

    const configCat = localStorage.getItem('ConfigCat_');

  cy.request({

      method: 'GET',

      url: '/dashboard',

      failOnStatusCode: false,

      form: true,

      body:{

        _token: token,

        username,

        password

      },

      headers: {

        'accept': 'text/html',

        'content-type': 'application/x-www-form-urlencoded',

        'authorization': `bearer ${accessToken}`,

        'ConfigCat_': `${configCat}`,

        'cookie': `${cookieValue}`

       }

     }).then((res)=>{

      visitDashboard();

     })

  })


  const visitDashboard = () => {

    cy.visit('dashboard')

  }

图。1

http://img.mukewang.com/62aa958c0001e20706030084.jpg

图:2

http://img.mukewang.com/62aa95980001b3b405440096.jpg


catspeake
浏览 128回答 1
1回答

鸿蒙传说

不知何故,我设法找到了解决问题的方法。由于baseUrl有一些路径扩展名/auth/login,每当我触发 cy.request() 时,即使凭据正确,它总是会重定向回登录页面。控制台中还有两个请求。所以我所做的方法是在第一个带有参数的 POST cy.request() 之后立即发送另一个cy.request()带有参数的 GET 方法。从请求标头中,我发现每次用户登录时都会提交一个“令牌”。如果有另一种简单的方法让我知道。bodyqs赛普拉斯版本:4.4.0在里面beforeEach(),获取 'token' 值; beforeEach(() => {    cy.visit('/');    cy.loadTokens();    cy.get('input[name="_token"]').invoke('val').then((val)=>{        const tokenValue = val;        cy.loginRequest(tokenValue);      })    })以下是commands.js文件:Cypress.Commands.add('loginRequest', function (tokenValue) {     return cy.request({      method: 'POST',      url: Cypress.config('baseUrl'),      followRedirect: true,      headers: {        'content-type': 'text/html; charset=UTF-8'      },      qs:{        _token: tokenValue,        username: 'your_username',        password:'your_password'      }    }).then(()=>{      return cy.request({        method: 'GET',        url: 'https://tenant-demo.somesitedev.net/dashboard',        followRedirect: false,        headers: {          'content-type': 'text/html; charset=UTF-8'        },        body:{          _token: tokenValue,          username: 'your_username',          password:'your_password'        }      })    })  });
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript