赛普拉斯 cy.wait 别名
Cypress cy.wait with alias
我想通过 Cypress 中的 API 提取一个大的 json 文件。以下代码(不带 cy.wait())适用于小文件。一旦文件变大并且响应时间超过 30 秒,脚本就会超时。
因此我添加了cy.wait('@api_call')
describe('Api request', () => {
it('get json', () => {
cy.request({
method: 'GET',
url: '/api_endpoint',
headers: {
'API-KEY': 'xxxxxxxxxxxxxxxxx',
}
}).as('api_call')
cy.wait('@api_call').its('response.body').should('contain','name')
.then(response => {
var someArr = new Array();
someArr = response.body;
cy.writeFile('cypress/fixtures/testdata.txt', someArr);
})
})
})
现在这会抛出错误
cy.wait() only accepts aliases for routes.
如何正确地告诉 Cypress 等待请求解决?
[edit]我现在尝试从 https://docs.cypress.io/guides/references/configuration#Timeouts 添加所有可能的超时设置并将它们设置为 90000ms,但它仍然不会增加超时。 30秒后仍然超时。
您可以在 cypress.json
中为 responseTimeout
添加全局超时,例如:
{
responseTimeout: 30000
}
或者,您也可以单独添加超时 -
describe('Api request', () => {
it('get json', () => {
cy.request(
{
method: 'GET',
url: '/api_endpoint',
headers: {
'API-KEY': 'xxxxxxxxxxxxxxxxx',
},
timeout: 30000
},
).as('api_call')
cy.get('@api_call')
.its('response.body')
.should('contain', 'name')
.then((response) => {
var someArr = new Array()
someArr = response.body
cy.writeFile('cypress/fixtures/testdata.txt', someArr)
})
})
})
看来我的错是我使用超时选项的方式
describe('Api request', () => {
it('get json', () => {
cy.request({
method: 'GET',
url: 'https://api_endpoint',
headers: {
'API-KEY': 'xxxxxxx',
},
timeout: 90000 <-----
},
)
.then((response) => {
var someArr = new Array()
someArr = response.body
cy.writeFile('cypress/fixtures/testdata.txt', someArr)
})
})
})
如果您将超时选项放在那里,它将按预期工作。
现在它最多等待 90 秒,这对我来说已经足够了。
我想通过 Cypress 中的 API 提取一个大的 json 文件。以下代码(不带 cy.wait())适用于小文件。一旦文件变大并且响应时间超过 30 秒,脚本就会超时。
因此我添加了cy.wait('@api_call')
describe('Api request', () => {
it('get json', () => {
cy.request({
method: 'GET',
url: '/api_endpoint',
headers: {
'API-KEY': 'xxxxxxxxxxxxxxxxx',
}
}).as('api_call')
cy.wait('@api_call').its('response.body').should('contain','name')
.then(response => {
var someArr = new Array();
someArr = response.body;
cy.writeFile('cypress/fixtures/testdata.txt', someArr);
})
})
})
现在这会抛出错误
cy.wait() only accepts aliases for routes.
如何正确地告诉 Cypress 等待请求解决?
[edit]我现在尝试从 https://docs.cypress.io/guides/references/configuration#Timeouts 添加所有可能的超时设置并将它们设置为 90000ms,但它仍然不会增加超时。 30秒后仍然超时。
您可以在 cypress.json
中为 responseTimeout
添加全局超时,例如:
{
responseTimeout: 30000
}
或者,您也可以单独添加超时 -
describe('Api request', () => {
it('get json', () => {
cy.request(
{
method: 'GET',
url: '/api_endpoint',
headers: {
'API-KEY': 'xxxxxxxxxxxxxxxxx',
},
timeout: 30000
},
).as('api_call')
cy.get('@api_call')
.its('response.body')
.should('contain', 'name')
.then((response) => {
var someArr = new Array()
someArr = response.body
cy.writeFile('cypress/fixtures/testdata.txt', someArr)
})
})
})
看来我的错是我使用超时选项的方式
describe('Api request', () => {
it('get json', () => {
cy.request({
method: 'GET',
url: 'https://api_endpoint',
headers: {
'API-KEY': 'xxxxxxx',
},
timeout: 90000 <-----
},
)
.then((response) => {
var someArr = new Array()
someArr = response.body
cy.writeFile('cypress/fixtures/testdata.txt', someArr)
})
})
})
如果您将超时选项放在那里,它将按预期工作。
现在它最多等待 90 秒,这对我来说已经足够了。