我想在赛普拉斯中使用 cy.intercept 从 API 响应中获取 OrderID
I want to get OrderID from API responce using cy.intercept in cypress
我想从 API 响应中获取订单 ID。当我点击“创建订单”按钮时,它将发送一个 POST API 请求和 return 我想保存在我的 JSON 文件中的 ID。
这是我的订单创建代码。
cy.clickOnElement(practicePageSelectors.CreateOrder).click(); // click on add Rx button
cy.readFile('cypress/fixtures/Data.json').then((profile) => {
cy.searchPatients(practicePageSelectors.searchPatient1, profile.Patient_fullName);
})
cy.searchDoctors(); // search for the doctor
cy.clickOnElementUsingXpath(practicePageSelectors.nextButtonId); // click on the next button
cy.clickOnElement(practicePageSelectors.createOnetimeOrder)
cy.searchMedicine() //search for Medicine
cy.clickOnElementUsingXpathfirst(practicePageSelectors.addMedicine); // click on add button
cy.clickOnElementUsingText(practiceData.paymentButtonName, practiceData.buttonTag); // click on skip payment button
cy.clickOnElementUsingXpath(practicePageSelectors.submit_CreateOrderButton)
我试过类似的东西
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).then((responce)=>{
let body = JSON.parse(responce.body)
cy.log(body)
})
我不知道如何使用intercept
。请指导我
您必须在进行 http 调用之前注册拦截器,然后在您的测试中等待数据。
这应该发生在 before
挂钩中或在您的实际测试用例之上。
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
然后在您需要 ID 的地方
cy.wait('@ordersCall')
.its('response.body')
.then((body) => {
// parsing might be not needed always, depends on the api response
const bodyData = JSON.parse(body)
cy.log(bodyData)
})
旁注:cy.fixture()
直接从 fixtures
目录读取 - 无需使用 cy.readFile
我想从 API 响应中获取订单 ID。当我点击“创建订单”按钮时,它将发送一个 POST API 请求和 return 我想保存在我的 JSON 文件中的 ID。
这是我的订单创建代码。
cy.clickOnElement(practicePageSelectors.CreateOrder).click(); // click on add Rx button
cy.readFile('cypress/fixtures/Data.json').then((profile) => {
cy.searchPatients(practicePageSelectors.searchPatient1, profile.Patient_fullName);
})
cy.searchDoctors(); // search for the doctor
cy.clickOnElementUsingXpath(practicePageSelectors.nextButtonId); // click on the next button
cy.clickOnElement(practicePageSelectors.createOnetimeOrder)
cy.searchMedicine() //search for Medicine
cy.clickOnElementUsingXpathfirst(practicePageSelectors.addMedicine); // click on add button
cy.clickOnElementUsingText(practiceData.paymentButtonName, practiceData.buttonTag); // click on skip payment button
cy.clickOnElementUsingXpath(practicePageSelectors.submit_CreateOrderButton)
我试过类似的东西
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).then((responce)=>{
let body = JSON.parse(responce.body)
cy.log(body)
})
我不知道如何使用intercept
。请指导我
您必须在进行 http 调用之前注册拦截器,然后在您的测试中等待数据。
这应该发生在 before
挂钩中或在您的实际测试用例之上。
cy.intercept({
method: 'POST',
url: 'https://ibis-dev.droicelabs.us/api/dispenser/orders/',
}).as('ordersCall')
然后在您需要 ID 的地方
cy.wait('@ordersCall')
.its('response.body')
.then((body) => {
// parsing might be not needed always, depends on the api response
const bodyData = JSON.parse(body)
cy.log(bodyData)
})
旁注:cy.fixture()
直接从 fixtures
目录读取 - 无需使用 cy.readFile