Ответ 1
Существует возможность приблизиться к что делает browser-perf
, собирая хромовые журналы производительности и их анализ.
Чтобы получить журналы производительности, включите журналы performance
, настроив loggingPrefs
желаемые возможности:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.CHROME
caps['loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get('https://stackoverflow.com')
logs = [json.loads(log['message'])['message'] for log in driver.get_log('performance')]
with open('devtools.json', 'wb') as f:
json.dump(logs, f)
driver.close()
В этот момент файл devtools.json
будет содержать кучу записей трассировки:
[
{
"params": {
"timestamp": 1419571233.19293,
"frameId": "16639.1",
"requestId": "16639.1",
"loaderId": "16639.2",
"type": "Document",
"response": {
"mimeType": "text/plain",
"status": 200,
"fromServiceWorker": false,
"encodedDataLength": -1,
"headers": {
"Access-Control-Allow-Origin": "*",
"Content-Type": "text/plain;charset=US-ASCII"
},
"url": "data:,",
"statusText": "OK",
"connectionId": 0,
"connectionReused": false,
"fromDiskCache": false
}
},
"method": "Network.responseReceived"
},
{
"params": {
"timestamp": 1419571233.19294,
"encodedDataLength": 0,
"requestId": "16639.1"
},
"method": "Network.loadingFinished"
},
..
]
Теперь вопрос в том, что с ним делать.
Один вариант, который изначально предлагался во время конференции Google Test Automation Conference, должен отправить журналы webpagetest.org. В java есть пример здесь, но на данный момент мне не повезло реализовать его в Python.
В теории, отчет пользовательского интерфейса, созданный webpagetest.org, будет выглядеть так:
Они также предоставляют метрики в JSON/XML и других форматах, которые могут быть дополнительно проанализированы.
Это действительно что-то, благодаря Вивеку Сингху за комментарий.
browser-perf также использует функцию ведения журнала для сбора журналов трассировки и анализа данных.