私はヘッドレスchrome puppeteer
というノードAPIをいじっています。
特定のリクエストレスポンスをリッスンする方法と、結果としてどのように行動するかについて疑問に思っています。
イベントrequestfinish
とresponse
を確認しましたが、これによりallページですでに実行された要求/応答が得られます。
コメント付きの動作を実現するにはどうすればよいですか?
よろしくお願いします!
1つのオプションは次のとおりです。
page.on('response', response => {
if (response.url().endsWith("your/match"))
console.log("response code: ", response.status());
// do something here
});
これでもすべてのリクエストをキャッチしますが、イベントエミッタをフィルタリングして操作することができます。
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#event-response
フィルターされた応答(最大11秒待機)の本文は、最初に要求されたJSONとして解析されます[〜#〜] patch [〜#〜]または[〜#〜] post [〜#〜]メソッドを呼び出すたびに:
const finalResponse = await page.waitForResponse(response =>
response.url() === urlOfRequest
&& (response.request().method() === 'PATCH'
|| response.request().method() === 'POST'), 11);
let responseJson = await finalResponse.json();
console.log(responseJson);
操り人形師_v1.6.0
_(私が推測する)なので、あなたは page.waitForResponse(urlOrPredicate[, options])
を使用できます
ドキュメントからの使用例:
_const firstResponse = await page.waitForResponse('https://example.com/resource');
const finalResponse = await page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200);
return finalResponse.ok();
_
_jest-puppeteer
_ を使用して、テストサーバーの特定の応答コードをテストしようとしました。 page.goto()
元のリクエストの応答に解決 。
期待されるときに_404
_応答が返されるという簡単なテストを次に示します。
_describe(`missing article page`, () => {
let response;
beforeAll(async () => {
response = await page.goto('http://my-test-server/article/this-article-does-not-exist')
})
it('has an 404 response for missing articles', () => {
expect(response.status()).toEqual(404)
})
it('has a footer', async () => {
await expect(page).toMatch('My expected footer content')
})
})
_