どのような問題を解決していますか?
このスクリプトを使用すると、ブラウザ側の「フル」ページロードに関する統計を収集できます。 これは、明らかにサーバーによるページ配信時間とは異なります。 完全な読み込みとは、すべてのページリソース(画像、スタイル、スクリプト)を読み込み、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()
機能:
そのため、このツールで何ができるのかについてです。
- 任意のページの完全なロードに関する統計の自動収集。
- ChromeまたはFirefoxで実行します(理解しているように、ブラウザープロファイルをカスタマイズできます)。
このツールが他の誰かに役立つならうれしいです!
もちろん、改善したいと思います。 最初に、統計を使用して情報の出力を処理します-ファイルに入れます。 次に、window.performanceからより多くのパラメーターを収集します。 第三に、数字の代わりにグラフを見るのは素晴らしいことです。