我正在尝试为我的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”后,您的远程页面超时 加载。
您的页面未在'60000ms'内触发其“加载”事件。
您可以尝试增加'cypress.json'中的'pageLoadTimeout'值 等待更久。
浏览器不会触发'load'事件,直到所有样式表和 脚本完成下载。
当发生'load'事件时,赛普拉斯将继续运行命令。
因为这个错误发生在我们之前的'每个'钩子之前 跳过当前套件中的剩余测试:'测试拖动和 放下,在cypr ......'
我试图增加pageLoadTimeout,但它没有工作,你能否就这个问题给我一些指导?
答案 0 :(得分:1)
如果您的页面上存在无法在赛普拉斯浏览器内部解析的外部资产,则可能发生这种情况。也许您的情况就是这种情况? 更新企业应用程序中的标头组件后,我遇到了类似的问题。突然所有e2e测试都失败,并出现此“未触发加载事件”错误。
经过大量研究,我偶然发现,通过绝对外部URL包含了新插入的公司徽标。通过在CI中执行cypress,该URL被防火墙规则所阻止。 这导致页面加载事件被阻止,从而导致测试失败。将图片网址更改为相对路径后,一切又恢复正常了。
那么,也许您的“外部”网站也有类似的案例?!