web-dev-qa-db-ja.com

chromeパフォーマンスとトレースログの取得

WebDriverを使用したWebパフォーマンステスト googleテスト自動化会議トークとChromeDriver "パフォーマンスログ"ドキュメントページ で提案されたアイデアに従って、トレースデータを取得しようとしています。後でパフォーマンス分析のために webpagetest に送信したい。

python Seleniumバインディングを使用してパフォーマンスログを取得するにはどうすればよいですか?


ドライバーインスタンスで利用可能なlog_typesを印刷しようとしました

from Selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://stackoverflow.com')

print driver.log_types

driver.close()

しかし、

[u'browser', u'driver']

そして、関連する コマンドラインスイッチ が表示されません。

18
alecxe

パフォーマンスログはデフォルトで無効になっています

有効にするには、 DesiredCapabilities を使用し、loggingPrefsを構成します。

from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities.CHROME
 #as per latest docs
caps['goog:loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps)

driver.get('https://stackoverflow.com')

for entry in driver.get_log('performance'):
    print(entry)

driver.quit()

これにより、コンソールに一連のトレースログエントリが出力されます。

{u'timestamp': 1419487459178, u'message': u'{"message":{"method":"Network.responseReceived","params":{"frameId":"2105.1","loaderId":"2105.2","requestId":"2105.1","response":{"connectionId":0,"connectionReused":false,"encodedDataLength":-1,"fromDiskCache":false,"fromServiceWorker":false,"headers":{"Access-Control-Allow-Origin":"*","Content-Type":"text/plain;charset=US-ASCII"},"mimeType":"text/plain","status":200,"statusText":"OK","url":"data:,"},"timestamp":1419487458.92934,"type":"Document"}},"webview":"2C66E956-A48B-456B-8A4E-1022F699AA92"}', u'level': u'INFO'}
{u'timestamp': 1419487459178, u'message': u'{"message":{"method":"Network.loadingFinished","params":{"encodedDataLength":0,"requestId":"2105.1","timestamp":1419487458.92936}},"webview":"2C66E956-A48B-456B-8A4E-1022F699AA92"}', u'level': u'INFO'}
{u'timestamp': 1419487459178, u'message': u'{"message":{"method":"Page.frameNavigated","params":{"frame":{"id":"2105.1","loaderId":"2105.2","mimeType":"text/plain","securityOrigin":"://","url":"data:,"}}},"webview":"2C66E956-A48B-456B-8A4E-1022F699AA92"}', u'level': u'INFO'}
...
31
alecxe