如何使用 cypress 请求获取 json 值?
How do I grab json values using cypress request?
我一直在寻找许多堆栈溢出解决方案,但 none 似乎解决了我的问题。我在我的 commands.js 中编写了代码,因此我可以使用我试图在整个测试套件中提取的 json 值。这是我用来执行此操作的代码:
Cypress.Commands.add('setAuthToken', () => {
cy.request('/this/is/my/jsonToken').then((res) => {
cy.wrap(res.body.token).as('token')
cy.get('@token').then((token) => {
cy.log(token)
})
})
})
一直说值未定义。当我控制台日志或 cy 只记录“res.body”时,它会记录正确的 json 正文对象,但是一旦我尝试获取 属性,它就会变成“未定义”。欢迎任何建议或帮助。
可能还有其他因素在起作用,但我认为核心问题是 res.body
作为字符串返回,而不是 JSON 对象。您可以简单地解析该对象,然后您应该能够看到该值。
Cypress.Commands.add('setAuthToken', () => {
cy.request('/this/is/my/jsonToken').then((res) => {
cy.wrap(JSON.parse(res.body).token).as('token')
cy.get('@token').then((token) => {
cy.log(token)
})
})
})
注意:此实现仅解决了 res.body.token
未定义的主要问题。它可能无法解决以后存储和引用该值的任何问题。如果任务中没有更多信息,我无法为此提供充分的建议。
我一直在寻找许多堆栈溢出解决方案,但 none 似乎解决了我的问题。我在我的 commands.js 中编写了代码,因此我可以使用我试图在整个测试套件中提取的 json 值。这是我用来执行此操作的代码:
Cypress.Commands.add('setAuthToken', () => {
cy.request('/this/is/my/jsonToken').then((res) => {
cy.wrap(res.body.token).as('token')
cy.get('@token').then((token) => {
cy.log(token)
})
})
})
一直说值未定义。当我控制台日志或 cy 只记录“res.body”时,它会记录正确的 json 正文对象,但是一旦我尝试获取 属性,它就会变成“未定义”。欢迎任何建议或帮助。
可能还有其他因素在起作用,但我认为核心问题是 res.body
作为字符串返回,而不是 JSON 对象。您可以简单地解析该对象,然后您应该能够看到该值。
Cypress.Commands.add('setAuthToken', () => {
cy.request('/this/is/my/jsonToken').then((res) => {
cy.wrap(JSON.parse(res.body).token).as('token')
cy.get('@token').then((token) => {
cy.log(token)
})
})
})
注意:此实现仅解决了 res.body.token
未定义的主要问题。它可能无法解决以后存储和引用该值的任何问题。如果任务中没有更多信息,我无法为此提供充分的建议。