18

Google Chrome 38は、devtoolsに新しい"Device Mode & Mobile Emulation"という機能を導入しました。エミュレーション用のデバイスを選択することに加えて、それはemulate different network conditionsすることも可能である:クロムとセレンによるネットワークスロットル

は、様々なネットワーク条件下でのサイトのパフォーマンスを最適化するモバイルユーザー向けの開発の重要な側面 です。

デバイスモードのネットワーク調整機能を使用すると、Edge、3G、さらにはオフラインを含む のネットワーク接続でサイトをテストできます。 プリセットドロップダウンから接続を選択してネットワーク スロットリングとレイテンシ操作を適用します。 GPRS 50 Kbpsの -

例えば、我々はそれが古き良き時代のように設定することができます

enter image description here

今、我々はそれのために良いユースケースを持っている - 私たちは内部アプリケーションのために持っていますネットワーク速度テスト。この新しいエミュレーション機能は、手動テストに非常に役立ちます。しかし、我々はそれを自動化したい。

質問は次のとおりです。

それが指定されたネットワークの状態とセレンを経由してChromeを起動することは可能ですか?クロームの設定やコマンドライン引数で制御できるものなのでしょうか?


は確かsimulate slow internet connectionに複数のオプションがありますが、問題は、クロム+セレンについて、具体的です。

答えて

7

ネットワークエミュレーションを制御するAPI were addedとChromeDriver。そして、かなり長い間利用できるはずです。リンクされた問題のcommentによると、いくつかのバグ修正のために少なくとも2.26のバージョンを使用する必要があります。書き込みバインディングの瞬間にセレンchangelogによると

は2つの言語のために用意されていますバージョン3.4.0のよう

  • のJavaScript(commit
  • バージョン3.5.0のようパイソン(commit

他の言語でこれらのバインディングが必要な場合は、おそらく上記のいずれかと同様の問題を発行する必要があります。パイソンから

使用例は以下の通りです:

driver.set_network_conditions(
    offline=False, 
    latency=5, # additional latency (ms) 
    download_throughput=500 * 1024, # maximal throughput 
    upload_throughput=500 * 1024) # maximal throughput 
+0

download_throughput&upload_throughputはバイト/秒ですか?したがって、例は約5MB/sですか? – Cynic

+0

@Cynic Chrome Dev Toolsでは 'kb/s'と書かれています。私の前提は、APIを使用する場合と同じであるということです。しかし、私は自分自身をテストしていません。あなたがそれを見つけたときに答えを編集してください。 –

+0

それは変です。開発ツールを使用して5 * 1024のように入れてテストし、http://speedtest.xfinity.com(簡単にスタートボタンを見つける)でテストすると、5 mbpsになります。しかし、私がSeleniumスクリプトで同じことをすると、5 * 1024は基本的に登録されません。約5 mbpsを取得するには、約5 mbps(インターネットではなくスクリプトでスロットルをしないと、300 mbps +で約5 mbpsを上回るものを得るために、5 * 30000を何かする必要があります。おそらくバグかもしれませんが、私が考えることができるコンバージョンにはうまく対応していません。 – Cynic

14

いいえ、Network Connectivity EmulationをChromeの設定やコマンドライン引数で制御することはできません。ネットワーク接続エミュレーションは、ビルドインChromeデバッガの一部です。これを解決する1つの方法は、デバッガを制御することです。これは、拡張機能を介して、またはデバッガを直接制御することによって行うことができます。explanationを参照してください。ただし、これはWebDriverでは機能しません。この理由は、「デバッグ」セッションが1つしかなく、WebDriverが既にそれを使用しているからです。explanationを参照してください。パブリックインターフェイスがないので、WebDriver経由でコントロールする方法もありません。

ビルドインデバッガの一部でもあるDevice Mode & Mobile Emulationの場合、パブリックインターフェイス(details)があり、制御することができます。これはWebDriver Capabilitiesを通じて行うことができます。 2つのオプション1)デバイス名を指定します。2)独自のパラメータを入力します(制限付き)。

+0

これはもはや真ではない、受け入れられた解決策を参照してください。 – tomasz

5

これは機能の非常に歓迎され、有用なビットですが、深刻なテストのためには、ネットワークシミュレーションの従来の方法がまだまだ道のりだと思います。

Charles web proxy(非常に便利なツール - 商用)とLinux Traffic Controlを使用して独自のレシピを実装しています(例:LAMPe2eの第6章を参照)。

ブラウザではなくネットワーク接続に干渉することで、使用しているブラウザとは無関係に適切な影響を測定できます。

なぜChromeの機能を使いたいのですか?

関連する問題