web-dev-qa-db-ja.com

page.cookies()が応答ヘッダーにあるCookieを返さないのを待つ

Webページを開いて応答値を確認し、Cookieを取得する基本的な人形スクリプトを実行しています。

以下の例では、応答ヘッダーに次のキー値があります。

page.on('response', response => {
  const req = response.request();
  const resp = response;
  let result = {};
  result['method'] = req.method;
  result['status'] = resp.status;
  result['url'] = req.url;
  result['headers'] = resp.headers;


// Output of result['headers'] shortened for example
     u'server': u'Microsoft-IIS/7.5',
     u'set-cookie': u'A6=030uxloava000EG.000010000; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nC6=; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nD3=; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nu2=7f11f3f6-8979-4adc-824e-4d43b67f9b374ib310; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/',
     u'x-powered-by': u'ASP.NET'},

そのヘッダーにはset-cookieが表示されますが、page.on( 'response' ...の直後にawait page.cookies()を呼び出すと、

    const cookies = await page.cookies();

const cookieは[]になります。ここで何か不足していますか?

6

responseイベントは、リクエストが実際に完了する前に発生します。代わりにrequestfinishedを使用することもできますが、個々のHTTPリクエスト(すべてのスクリプト、画像など)を気にしない場合は、次の方法で「最終Cookie」を取得できます。

 const page = await browser.newPage()
 await page.goto('https://www.google.com')
 const cookies = await page.cookies()
12
Pasi