我是 cypress 的新手,尝试登录我的练习网站,但我遇到了这个 gtag 的问题。使用 cypress 的实际测试已完成(用户成功登录),但有一个错误导致此测试失败,有人可以帮助我吗?这是我的照片和我的赛普拉斯代码和我的配置
这是我的错误图片
describe('Login user', () => {
beforeEach(() => {
cy.viewport(1392, 768)
cy.visit('thiswebcom')
})
it('Login as user', () => {
cy.get('a[href*="/login"]').first().click()
cy.get('#buttonLoginTrack').should('have.text', '\n Login\n ')
const userName = '[email protected]'
const password = 'mypassword'
cy.get('#email').type(`${userName}`)
cy.get('#password').type(`${password}`).type('{enter}')
})
这是我用于登录的 cypress 代码
module.exports = {
e2e: {
setupNodeEvents(on, config) {
// implement node event listeners here
},
},
};
这是我的 cypress.config.js 文件
我尝试使用 blockHosts,但不知道如何将其放入,谢谢
由于图片中有“未捕获的异常”,这意味着应用程序本身正在创建该错误 - 在正常情况下用户看不到该错误,除非您在开发工具中检查它。
诀窍是像这样将捕手放在测试的顶部
Cypress.once('uncaught:exception', (err, runnable) => {
return false;
})
这可以阻止测试仅仅因为应用程序中存在潜在无害的错误而失败。
这里是一些文档:未捕获的异常。
一般来说,作为测试人员,你会有点担心这样的错误,但它无法从测试中修复,只能从应用程序本身修复。
Kitty.Flanagan 的答案是一个很好的答案,但在使用
Cypress.on()
时应谨慎,因为它将产生全局影响,而 cy.on()
只会持续用于测试文件。
此外,返回 false 将绕过所有未捕获的异常,并可能导致测试无法捕获问题。
最终,您希望向您的开发团队提出任何未捕获的异常问题。如果未捕获的异常是由第 3 方抛出且无法解决的,那么我建议将以下内容添加到您的测试文件中。
cy.on('uncaught:exception', (err, runnable) => {
return !e.message.includes('ReferenceError: gtag is not defined in Cypress')
})