Google Chrome 38はdevtoolsの新しい "デバイスモードとモバイルエミュレーション" 機能を導入しました。エミュレーション用のデバイスを選択することに加えて、 異なるネットワーク条件をエミュレート :
さまざまなネットワーク条件でサイトのパフォーマンスを最適化することは、モバイルユーザー向けの開発の重要な側面です。
デバイスモードのネットワーク調整により、Edge、3G、さらにはオフラインを含むさまざまなネットワーク接続でサイトをテストできます。事前設定されたドロップダウンから接続を選択して、ネットワーク調整と遅延操作を適用します。
たとえば、古き良き時代のように設定できます-GPRS 50 Kbps:
これで良いユースケースができました-ネットワーク速度テスト用の内部アプリケーションがあります。また、この新しいエミュレーション機能は、手動テストに非常に役立ちます。しかし、私たちはそれを自動化したいです。
質問:
指定されたネットワーク条件でSeleniumを介してchromeを開始できますか?chrome設定またはコマンドライン引数を使用して制御できますか?
遅いインターネット接続をシミュレートする には確かに複数のオプションがありますが、問題は具体的にchrome + Seleniumに関するものです。
ネットワークエミュレーションを制御するAPI 追加された ChromeDriverに。そして、かなり長い間利用可能になるはずです。リンクされた問題の comment によると、バグ修正のため、少なくともバージョン2.26を使用する必要があります。
Seleniumによると changelog バインディングはこれらの言語で利用可能です:
他の言語でこれらのバインディングが必要な場合は、おそらく上記のいずれかと同様のissue/contribute実装を開く必要があります。
Python=の使用例は以下のとおりです。
driver.set_network_conditions(
offline=False,
latency=5, # additional latency (ms)
download_throughput=500 * 1024, # maximal throughput
upload_throughput=500 * 1024) # maximal throughput
いいえ、 ネットワーク接続エミュレーション からChrome設定またはコマンドライン引数。ネットワーク接続エミュレーションはビルドインの一部ですChromeデバッガ。これを解決する1つの方法は、デバッガを制御することです。これは、拡張機能を使用するか、デバッガを直接制御することで実行できます。 説明 を参照してください。この理由は、「デバッグ」セッションが1つしか存在できず、WebDriverがすでにそれを使用しているためです explanation を参照してください。パブリックインターフェイスがないため、それを制御する方法もありません。 WebDriver経由。
デバイスモードとモバイルエミュレーション には、ビルドインデバッガーの一部でもあるパブリックインターフェース(- details )があるため、制御できます。これは、WebDriver機能を介して実行できます。 2つのオプション1)デバイス名を指定します2)独自のパラメーターを入力します(制限あり)。
これは非常に歓迎される便利な機能ですが、深刻なテストを行う場合は、ネットワークシミュレーションの従来の方法がまだ有効だと思います。
すでにリンクされているものに加えて、2つのソリューション- Charles web proxy (非常に便利なツール-商用)とLinux Traffic Controlを使用して独自のレシピを実装していることを認識しています(たとえば LAMPe2e )。
ブラウザではなくネットワーク接続に干渉することにより、使用中のブラウザに関係なく、影響の適切な測定値を取得できます。
Chrome機能を使用したいのはなぜですか?
実際、最新のC#Selenium(3.11)にはNetworkConditionsが追加されています。これで、次のように使用できます。
var driver = new ChromeDriver(pathToDriver);
driver.NetworkConditions = new ChromeNetworkConditions()
{ DownloadThroughput = 5000, UploadThroughput = 5000, Latency = TimeSpan.FromMilliseconds(5) };
問題は、バグのためにまだ使用できないことです
.Netの人は3.12 Seleniumリリースまで待たなければなりません。
このメソッドを使用して、指定されたネットワーク条件でテストケースを実行できます。
protected void networkThrotting() throws IOException {
Map map = new HashMap();
map.put("offline", false);
map.put("latency", 5);
map.put("download_throughput", 500);
map.put("upload_throughput", 1024);
CommandExecutor executor = ((ChromeDriver)driver).getCommandExecutor();
Response response = executor.execute(
new Command(((ChromeDriver)driver).getSessionId(), "setNetworkConditions", ImmutableMap.of("network_conditions", ImmutableMap.copyOf(map)))
);
}
Selenium(C#)にまもなく登場するようです。コミットは2018年1月28日でした: