【发布时间】:2021-01-11 19:30:58
【问题描述】:
我在基于 Drupal 8 的网站上使用 Cypress 测试时遇到了一个问题,当我点击其中一个调用 AJAX 命令的按钮时出现 500 服务器错误,当我浏览时它工作得非常好本地相同的页面,但赛普拉斯立即抛出 500 服务器错误。
正如@NoriSte 所描述的here,我已经使用https://www.npmjs.com/package/cypress-wait-until cy.waitUntil 尝试了以下代码并更新了选择器等,该代码多次尝试/单击按钮,但在所有请求中AJAX 正在获得 500。
// This will be set to true when the XHR request starts.
let requestStarted = false
cy.server()
cy.route({
method: 'POST',
url: '/the-ajax-url?*',
onRequest: () => (requestStarted = true)
}).as('sendCommand');
cy.get('.the-button-selector').as('button')
cy.waitUntil(() => cy.get('@button')
.should('be.visible')
.click({force: true})
.then(() => requestStarted === true), {
timeout: 20000,
interval: 1000,
errorMsg: 'POST not sent `enter code here` within time limit'
})
cy.wait('@sendCommand')
我想要实现的是允许此 AJAX 请求一段时间,因此它不会快速抛出 500 错误,而是按预期加载和工作。
注意:这个 AJAX 请求响应实际约为 1.5 MB,不确定这是否有帮助。
【问题讨论】:
-
如果你注释掉服务器和路由行,它的工作方式和你从浏览器运行时一样吗?
-
不,在这两种情况下有/没有赛普拉斯都没有按预期工作,即 AJAX 请求正在本地/远程完成,没有任何问题,但我正在尝试执行相同的 AJAX 请求Cypress 测试,自发报500 Server Error。
-
你能显示实际的错误输出和堆栈跟踪吗?
-
@RosenMihaylov,将图片添加到问题中,这是您要问的吗?
-
是的,这对我来说是一个陌生的问题,但像这样更有可能有人能够帮助你