Webページのロード統計の収集

主にフロント開発者向けの便利なツールをコミュニティと共有したいと思います。 このツールはかなり湿っていて、開発が必要です。 簡単に言えば、これは問題を解決する一般的なたわごとコードです。 リファクタリングについては、能力が不足しています。



どのような問題を解決していますか?




このスクリプトを使用すると、ブラウザ側の「フル」ページロードに関する統計を収集できます。 これは、明らかにサーバーによるページ配信時間とは異なります。 完全な読み込みとは、すべてのページリソース(画像、スタイル、スクリプト)を読み込み、onloadブラウザイベントを実行することを意味します。 誰もが知っているように、今回はfirebugで見ることができます。 しかし、適切な評価のためには、統計を収集する必要があることは明らかです。 ページを開き、1回または2回以上フルロードした時間を覚えておいてください。 何百ものスタートに基づいて、あなたはすでに全負荷の平均時間について話すことができます、そして、これは私の理解では良い指標です。



かつて、Firebug Firefox v.3.6用の拡張機能が作成され、このような統計情報を収集できるようになり、ブラウザーのキャッシュであるHammerhead( stevesouders.com/hammerhead )をオフにすることができました。 残念ながら、新しいバージョンとの互換性はありません。



Javascriptファイルの最適化されたダウンロードの有効性を評価するには、このような統計が必要でした。 その結果、適切なものが見つからなかったため、自転車を作りました。 基礎として、Webインターフェースの自動テスト用のSelenium WebDriverシステムが選択されました。 Pythonバージョンを使用しました。 時間を測定するには、比較的新しいHTML5 window.performanceオブジェクトを使用します (詳細についてはwww.html5rocks.com/en/tutorials/webperformance/basicsを参照してください)。



スクリプト実行




これは私の最初の(そして今までで最後の!)Seleniumのテストだったので、インストールと実行にいくつかの困難に遭遇しました。 一般的に、ミハイルポラーラッシュのマスタークラス「最初のセレンテストの書き方」に焦点を当てることをお勧めします( Youtu.be/IPraAY78jGY?t=22m22s

スクリプトを正常に実行するには、いくつかの条件を満たす必要があります。

a)タイプライター上のpythonの存在

b)自動テストの製品を直接インストールする:

pip install selenium
      
      





c)JUnitに類似したテスト用のPythonインタープリターをインストールします。

 pip install pytest
      
      





テストを実行するコマンド。たとえば、ファイルtest.pyに配置されます。

 py.test test.py
      
      







起動の様子、スクリーンショット:

画像



コードの説明


(すでに合意したように、すべてのコードは単一のtest.pyファイルにあります)



 # author: ivn_cote # MIT license from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException import unittest, time class Test3(unittest.TestCase): def setUp(self): #      self.driver = webdriver.Firefox() #   ,    webdriver.Chrome('./chromedriver') self.driver.implicitly_wait(10) # 10         self.base_url = "http://www.amazon.de" #   self.verificationErrors = [] self.driver.get(self.base_url + "/gp/yourstore/home?ie=UTF8&ref_=topnav_ys") #    def test_stat(self): #     loops = 2 #    driver = self.driver total = 0 #  ,     ,   , # ., : #self.driver.execute_script( "document.cookie='name=value'" ) #     ,      : #self.driver.add_cookie({'name':'value'}) for j in range(loops): driver.refresh() #time.sleep(3) #  3   ,   Chrome! #       onload stext = self.driver.execute_script( "return ( window.performance.timing.loadEventEnd - window.performance.timing.navigationStart )") total = total + int(stext) print "Value is: %s" % stext print "TOTAL is: %s" % (total / loops ) self.assertEqual("0", total) #    ,    (  ),        def tearDown(self): #      self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
      
      







機能:


そのため、このツールで何ができるのかについてです。





このツールが他の誰かに役立つならうれしいです!

もちろん、改善したいと思います。 最初に、統計を使用して情報の出力を処理します-ファイルに入れます。 次に、window.performanceからより多くのパラメーターを収集します。 第三に、数字の代わりにグラフを見るのは素晴らしいことです。



All Articles