2017-09-06 8 views
3

私はPuppeteerをエンドツーエンドのテストに使用しようとしています。これらのテストでは、DevToolsのネットワークエミュレーション機能にアクセスする必要があります(オフラインブラウジングをシミュレートするなど)。Puppeteer:DevTools Network APIにアクセスする方法はありますか?

これまでのところ、私はchrome-remote-interfaceを使用していますが、私の好みには低すぎます。

私が知る限り、PuppeteerはネットワークのDevTools機能(DevToolsプロトコルではemulateNetworkConditions)を公開していません。

これらの機能にアクセスするには、Puppeteerにエスケープハッチがありますか? DevTools APIがアクセス可能なコンテキストでJavascriptスニペットを実行する方法?

おかげ

編集: OK、私がこのようなものを使用したAPIの不足を回避できるようですので:

const client = page._client; 
    const res = await client.send('Network.emulateNetworkConditions', 
     { offline: true, latency: 40, downloadThroughput: 40*1024*1024, 
     uploadThroughput: 40*1024*1024 }); 

しかし、私はそれは悪いフォームと5月であると仮定私の足の下でいつでも滑る?

+0

ない任意の時間を、私は推測しますが、基本となるAPIは、予想外の方法で変更されている場合のみ。 – wOxxOm

答えて

6

更新:ヘッドレスChromeはネットワークスロットルをサポートしています。

Puppeteerでは、デバイス(https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageemulateoptions)はエミュレートできますが、ネットワーク状態はエミュレートできません。これはわれわれが検討していることだが、ヘッドレスChromeはまずネットワークスロットルをサポートする必要がある。デバイスをエミュレートする

は、私がDeviceDescriptorsで見つかった定義済みのデバイスを使用したい:

const puppeteer = require('puppeteer'); 
const devices = require('puppeteer/DeviceDescriptors'); 
const iPhone = devices['iPhone 6']; 

puppeteer.launch().then(async browser => { 
    const page = await browser.newPage(); 
    await page.emulate(iPhone); 
    await page.goto('https://www.google.com'); 
    // other actions... 
    browser.close(); 
}); 
+0

OK、私はヘッドレスChromeが抑制できないことを知らなかった。生のプロトコルメッセージをページに送る機能については、ある時点で公開されるのでしょうか?それとも、それはそのままであるか、閉鎖物などの中に隠されていますか?基本的に、私はそれに頼ることができますか? – Rom1

+0

@ebidelはクロムに添加されているので、どうすれば使用できますか? https://chromium.googlesource.com/chromium/src/+/8931a104b145ccf92390f6f48fba6553a1af92e4%5E%21/#F0 –

+0

今すぐ購入してください。何を見ていますか? – ebidel

関連する問題