首页 > 解决方案 > 点击发送请求时出现 Cypress 400 XHR 错误

问题描述

我已经和 cypress 合作了一天。我有一个按钮,一旦你点击它就会刷新页面,之后的一些测试仍然会通过。

单击此按钮将引发 400 错误。(发帖要求)

我可以单击页面上的其他按钮,也可以在浏览器中的新选项卡中手动执行此操作。但是一旦测试自动化它,它就会失败。

我读了几个案例: #1951 #2001

但似乎没有人能够解决这个问题。

index.js

module.exports = (on, config) => {
  on('before:browser:launch', (browser, launchOptions) => {
    if (browser.name === 'chrome') {
      launchOptions.args.push('--disable-site-isolation-trials');
      launchOptions.args.push('--incognito')
      return launchOptions
    }
  })
}

测试.js

context('Checkout Purchase', () => {
    describe('Checkout Form', () => {
        it('Tests Promo Codes', () => {
            cy.wait(2000);
            cy.get('#promoCode')
            .type('bw-nw-testing')
            .should('have.value', 'bw-nw-testing')
            cy.get('#applyPromoCodeButton')
              .click()
              .wait(2000)
        })
        })
})

柏树.json

{
  "projectId": "lkj8fdj",
  "chromeWebSecurity": false,
  "baseUrl": "http://localhost:3000"
}

标签: automated-testscypressend-to-end

解决方案


HTTP 400 状态码代表Bad-Request。(即发送到 API 端点的请求不是 API 所期望的请求)。如果所述 HTTP 请求是从您的应用程序发送的,而不是直接从赛普拉斯发送的,则发出请求的应用程序代码可能有些错误。

检查浏览器上的网络选项卡,并尝试手动复制发送到外部(?)API 的请求。

注意:通常在测试期间,存根(模拟)来自外部实体的响应是一种常见的做法,但首先您必须首先确保传出请求是正确的。否则,您可能会掩盖应用程序中的错误。


推荐阅读