Cypress是一款现代化的前端自动化测试框架,它的API设计优雅,易用性和可读性强,已成为前端测试领域的佼佼者。但是在使用Cypress的过程中,我们有时候会遇到CommandTimeouts.assign via XHR failed报错。
错误提示
CommandTimeouts.assign via XHR failed
错误提示出现的原因是Cypress在发送XHTTP请求时没有接收到响应,从而超时。这种错误通常是在调用cy.visit(),cy.request()等命令时出现。
解决方案
1. 增加等待时间
在Cypress配置文件cypress.json中配置defaultCommandTimeout字段,增加默认等待时间。如:
{ "defaultCommandTimeout": 10000 }
2. 增加命令等待时间
在命令调用时可以增加等待时间。如:
cy.visit(url, {timeout: 10000})
3. 忽略异常
在cypress/support/index.js中增加以下代码:
Cypress.on('uncaught:exception', () => { return false })
这种方式不建议使用,它会忽略所有异常,包括正常的测试失败。
示例代码
以下是一个使用Cypress测试百度搜索的示例代码,其中包括增加等待时间和增加命令等待时间的方式:
describe('测试百度搜索', () => { it('搜索框可以输入并搜素内容', () => { cy.visit('https://www.baidu.com/', {timeout: 10000}) cy.get('#kw').type('Cypress').should('have.value', 'Cypress') cy.get('#su').should('be.enabled').click({timeout: 10000}) cy.url().should('include', 'https://www.baidu.com/s?wd=Cypress') }) })
总结
Cypress是一款非常强大的前端自动化测试框架,但是我们有时候在使用Cypress的过程中会遇到CommandTimeouts.assign via XHR failed这种报错。我们可以通过增加等待时间,增加命令等待时间和忽略异常的方式来解决这个问题。但是我们应该尽可能减少使用忽略异常的方式,以保证测试的准确性和稳定性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e30843f6b2d6eab3e5bcaf