4

我正在尝试为我的 webapp 执行一些测试,但要做到这一点,我必须登录到外部网站,为了做到这一点,我的 beforeEach 声明是:

beforeEach(()=>{
    cy.visit('http://localhost:3001/')
    cy.get('#username')
        .type('user');
    cy.get('#password')
        .type('pass');
    cy.get('#fm1 > div > section.row.btn-row > input.btn.btn-submit.btn-block')
        .click();
})

预期的行为是,当我转到 localhost:3001 时,它会将我重定向到我设置登录凭据的另一个网站,并在单击登录后将我重定向到原始站点。

问题是在外部网站上我收到了这个

CypressError:等待“60000ms”加载远程页面后超时。

您的页面未在“60000 毫秒”内触发其“加载”事件。

您可以尝试增加“cypress.json”中的“pageLoadTimeout”值以等待更长时间。

在所有样式表和脚本下载完成之前,浏览器不会触发 'load' 事件。

当此“加载”事件发生时,赛普拉斯将继续运行命令。

因为此错误发生在“每个之前”挂钩期间,我们正在跳过当前套件中的剩余测试:“测试拖放,在 cypr 中......”

我试图增加 pageLoadTimeout 但它不起作用,你能给我一些关于这个问题的指导吗?

4

1 回答 1

6

如果您的页面上有无法在赛普拉斯浏览器内解析的外部资产,则可能会发生这种情况。也许您的环境就是这种情况?在我们的企业应用程序中更新标题组件后,我遇到了类似的问题。突然间,所有 e2e 测试都因这个“加载事件未触发”错误而失败。

在做了一些广泛的研究后,我偶然发现新插入的公司徽标是通过绝对外部 URL 包含的。通过在我们的 CI 中执行 cypress,该 URL 由于防火墙规则而被阻止。这导致页面加载事件被阻止,从而导致测试中断。将图像 URL 更改为相对路径后,一切正常。

那么,也许你的“外部”网站也有类似的案例?!

于 2019-03-05T12:09:22.453 回答