Javascript 在Cypress中,如何检查最新响应的标题?

Javascript 在Cypress中,如何检查最新响应的标题?,javascript,mocha.js,integration-testing,chai,cypress,Javascript,Mocha.js,Integration Testing,Chai,Cypress,在Cypress中,我正在设置登录循环,然后希望提取某些头文件,以便在后续请求中使用。以下是我的登录方式: function login() { return cy.visit('/login') .get("#username").type(Cypress.env("USERNAME")) .get("#password").type(Cypress.env("PASSWORD")) .get("form").submit() .then((result)

在Cypress中,我正在设置登录循环,然后希望提取某些头文件,以便在后续请求中使用。以下是我的登录方式:

function login() {
  return cy.visit('/login')
    .get("#username").type(Cypress.env("USERNAME"))
    .get("#password").type(Cypress.env("PASSWORD"))
    .get("form").submit()
    .then((result) => {
      // TODO - extract the last response's headers and save for later
    });
}
但是在这种情况下,
result
表单的DOM选择,我不确定如何获得最新的结果

是否有一些拦截器或其他方式提交表单,使我能够更多地访问请求或响应

我不能用一个
cy.request()
来替换它,因为它会跟随一些重定向将我带到一个外部SSO登录页面,因此我只需要检查最新的结果


提前感谢。

您需要等待包含所需信息的url的响应。看看这个例子

cy.server().route('http://' + host + '/api/managerecord/userdetails/*').as('getUserDetails')
cy.get(submitButton).click()
cy.wait('@getUserDetails').then((response) => {
    expect(response.response.body.waistSize).to.eq(100)
})

在您的情况下,在最后一个响应上设置一条路径,然后等待该响应。如果您不知道该url,请查看Chrome inspector。

据我所知,您的表单提交使用本机
POST
请求,而不是XHR?如果是这样的话,我不确定你能截获它。无论如何,在基于DOM的命令上链接
.then()
都不会产生请求对象。为此,您需要
cy.route()
cy.wait()