无法通过赛普拉斯加载我的 Azure 托管 Web 应用程序

Posted

技术标签:

【中文标题】无法通过赛普拉斯加载我的 Azure 托管 Web 应用程序【英文标题】:Unable to load my Azure hosted web app through Cypress 【发布时间】:2022-01-19 14:22:58 【问题描述】:

当我尝试 cy.visit('url') 时,我有一个 Azure 托管的应用程序 Cypress 卡住并且下面是可见的。 一段时间后“HTTP 错误 414。请求 URL 太长”。可见。 如果有人对如何解决此问题有任何想法,请提供帮助。

【问题讨论】:

【参考方案1】:

从 URL 来看,您的应用似乎使用了活动目录登录。这意味着您的赛普拉斯测试必须首先使用测试用户登录。您可以按如下方式实现:

在 Cypress 中,您可以添加自己的自定义命令,如下所述: https://docs.cypress.io/api/cypress-api/custom-commands

通过这种方式,您可以编写自定义命令,从技术上将测试用户登录到活动目录,例如:

Cypress.Commands.add('login', () => 
  return cy
    .request(
      method: 'POST',
      url: `https://login.microsoftonline.com/$tenantId/oauth2/token`,
      form: true,
      body: 
        grant_type: 'password',
        tenant: 'tenantId',
        client_id: 'clientId',
        client_secret: 'clientSecret',
        username: 'username',
        password: 'password',
        resource: 'clientId',
      ,
    )
    .then((response) => 
      sessionStorage.setItem('access_token', response.body.access_token);
    );
);

然后您可以在测试中使用您的自定义命令作为第一个操作,例如:

cy.login();

然后执行您的站点访问:

cy.visit()

【讨论】:

以上是关于无法通过赛普拉斯加载我的 Azure 托管 Web 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cypress 登录 Azure 广告

赛普拉斯与SystemJS

单击超链接时能够防止/停止在赛普拉斯中加载“页面加载”

赛普拉斯自定义命令无法识别

无法从赛普拉斯的 html 正文中提取 CSRF 令牌

赛普拉斯:我们如何在赛普拉斯中使用不记名令牌编写 GET 请求?