剧作家 waitForResponse 如何等到响应有文本 "completed"
Playwright waitForResponse how to wait till the response has text "completed"
我有一个场景,其中 API 收到多个响应(一次一个)并在 UI 上呈现。
API 继续轮询数据库,直到完成接收所有响应。
我需要我的脚本等待 API 响应变为“完成”。我试过下面的代码,但它不会等到状态完成。
const response = await page.waitForResponse(response => response.url().includes('https://services/url') && response.status() === 200);
console.log('RESPONSE ' + (await response.body()));
下面是记录的响应
{
"transactionDetail": {
"transactionID":"866f357f-7541-4ff2-b879-61ca284513a7",
"transactionTimestamp":"2021-08-02T10:48:50.372207",
"inLanguage":"en-US",
"serviceVersion":"1"
},
"resultSummary":{
"inputCount":1,
"successCount":1,
"failureCount":0},
"inquiryDetail": {
"kaseIterationId":"8a7b11547af8835d017b067ad06e04ba"
},
},
"response":"InProgress"
}
如何让我的脚本等到“响应”变为“已完成”而不是“进行中”。
您可以通过向 page.waitForResponse
提供一个异步谓词来做到这一点,如下所示:
async function isFinished(response) {
return response.url().includes('https://services/url') && response.status() === 200 && (await response.json()).response === 'Completed'
}
const response = await page.waitForResponse(async (response) => await isFinished(response));
我有一个场景,其中 API 收到多个响应(一次一个)并在 UI 上呈现。 API 继续轮询数据库,直到完成接收所有响应。 我需要我的脚本等待 API 响应变为“完成”。我试过下面的代码,但它不会等到状态完成。
const response = await page.waitForResponse(response => response.url().includes('https://services/url') && response.status() === 200);
console.log('RESPONSE ' + (await response.body()));
下面是记录的响应
{
"transactionDetail": {
"transactionID":"866f357f-7541-4ff2-b879-61ca284513a7",
"transactionTimestamp":"2021-08-02T10:48:50.372207",
"inLanguage":"en-US",
"serviceVersion":"1"
},
"resultSummary":{
"inputCount":1,
"successCount":1,
"failureCount":0},
"inquiryDetail": {
"kaseIterationId":"8a7b11547af8835d017b067ad06e04ba"
},
},
"response":"InProgress"
}
如何让我的脚本等到“响应”变为“已完成”而不是“进行中”。
您可以通过向 page.waitForResponse
提供一个异步谓词来做到这一点,如下所示:
async function isFinished(response) {
return response.url().includes('https://services/url') && response.status() === 200 && (await response.json()).response === 'Completed'
}
const response = await page.waitForResponse(async (response) => await isFinished(response));