18

Google Chrome 38在devtools中引入了新的"Device Mode & Mobile Emulation"功能。除了選擇用於仿真的設備,它也可以emulate different network conditions網絡與鉻和硒節流

優化不同的網絡條件下,網站的性能是 的移動受衆羣體發展的一個重要方面。

設備模式的網絡條件允許您測試您的網站的各種網絡連接,包括邊緣,3G,甚至離線。 從預設下拉菜單中選擇一個連接以應用網絡 限制和延遲操縱。

例如,我們可以將其設置爲像好日子 - GPRS 50 Kbps的:

enter image description here

現在,我們有這方面的良好的使用情況 - 我們有一個內部應用程序網絡速度測試。這種新的仿真功能對手動測試非常有用。但是,我們想自動化它。

的問題是:

是否有可能通過與指定的網絡條件硒開始鉻?是否可以通過chrome首選項或命令行參數進行控制?


當然有多種選擇simulate slow internet connection,但問題是專門關於Chrome +硒。

回答

7

用於控制ChromeDriver的網絡仿真were added的API。現在應該可以使用一段時間了。根據comment在鏈接的問題,你應該使用版本至少2.26因爲一些錯誤修正。

據在寫綁定的時刻硒changelog可用於2種語言:

  • JavaScript作爲3.4.0版本(commit
  • 的Python爲3.5.0版本(commit

如果您需要在其他語言中進行這些綁定,您應該打開與上述類似的問題/貢獻實現。從Python的

實例使用率低於:

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開發工具中它說'kb/s'。我的假設是,使用API​​時它是一樣的。但我還沒有測試過自己。如果/當你找出答案,請編輯答案。 –

+0

這很奇怪。如果我使用開發工具將其切換並放入像5 * 1024並在http://speedtest.xfinity.com(易於查找開始按鈕)測試,我得到5 mbps。但是如果我在一個Selenium腳本中做同樣的事情,5 * 1024基本上不會註冊。要達到5 mbps左右,我需要做一些5 * 30000左右的工作,以達到5 mbps左右的速度(如果我沒有在腳本中加入互聯網,就需要300 mbps +)。也許一個錯誤,因爲這不符合我能想到的任何轉換。 – Cynic

14

不,它不可能通過鉻偏好或命令行參數來控制Network Connectivity Emulation。網絡連接仿真是內置Chrome調試器的一部分。解決這個問題的一種方法是控制調試器。這可以通過擴展或直接控制調試器完成,請參閱explanation。但是,這不適用於WebDriver。原因是隻能有一個「調試」會話,並且WebDriver已經在使用它,請參閱explanation。由於沒有公共接口,因此也無法通過WebDriver控制它。

對於Device Mode & Mobile Emulation這也是內置調試器的一部分,有一個公共接口(details),因此可以控制。這可以通過WebDriver功能完成。兩個選項1)指定設備名稱2)輸入您自己的參數(限制)。

+0

這不再是真實的,請參閱接受的解決方案。 – tomasz

5

雖然這是一個功能非常歡迎和有用位,進行認真的測試,我認爲網絡仿真的傳統方法仍是要走的路。

我知道除了這些alrady鏈接的Charles web proxy(非常有用的工具 - 商業)以及使用Linux Traffic Control實現您自己的配方(例如參見LAMPe2e的第6章)之外,還有2種解決方案。

通過與網絡連接,而不是瀏覽器的干擾,那麼你得到的衝擊獨立使用的瀏覽器的正確措施。

爲什麼只是想使用Chrome功能?