2014-09-17 4 views
1

Есть ли способ получить снимок кучи с веб-сайта Selenium? В настоящее время я использую Chrome с драйвером Chrome.Хэп-снимок Selenium webdriver python

Я понимаю, что оба инспектора и Selenium подключаются через один и тот же порт. В инспекторе он предоставляет метод для получения моментального снимка кучи. Я думал, это возможно и через Selenium, так как оба работают аналогичным образом.

Спасибо.

EDITED: Пройдя приведенный ниже код, мне удалось получить снимок кучи.

import json 
jsonobj=driver.execute_script(":takeHeapSnapshot") 
f = filename('heap','w') 
f.write(json.dumps(jsonobj)) 
f.close 

Но когда я загружаю в Chrome, он дает мне ошибку: Произошла ошибка, когда вызов методу «закрыть» был предложен

SyntaxError: Unexpected token , at Object.parse (native) at Object.WebInspector.HeapSnapshotLoader._parseStringsArray (chrome-devtools://devtools/bundled/profiler/heap_snapshot_worker/HeapSnapshotWorker.js:748:117) at Object.WebInspector.HeapSnapshotLoader.close (chrome-devtools://devtools/bundled/profiler/heap_snapshot_worker/HeapSnapshotWorker.js:737:6) at Object.WebInspector.HeapSnapshotWorkerDispatcher.dispatchMessage (chrome-devtools://devtools/bundled/profiler/heap_snapshot_worker/HeapSnapshotWorker.js:789:95)

Я пытался сравнивать файл с фактической HeapSnapshot сохраненной от Chrome. Теги/имена, по-видимому, присутствуют в разных местах, но это действительный файл JSON. (Проверено с помощью jsonlint).

В любом теле есть информация о том, как chrome-inspector-> Профиль требует файла JSON?

ответ

1

Вам необходимо создать потоковый json, чтобы прочитать его с помощью devtools. Smth так:

{ 
"snapshot":{ } 
, 
"nodes": { } 
, 
"edges":[] 
, 
"trace_function_infos":[] 
, 
"trace_tree":[] 
, 
"samples":[] 
, 
"strings":[] 
} 

Пример Javascript, чтобы получить представление:

var open = '{\n', close = '\n}\n'; 
var keys = []; 
for (var key in json) { 
    keys.push('"' + key + '":' + JSON.stringify(json[key])); 
} 

var str = open + keys.join('\n,\n') + close; 

Вы также можете посмотреть в модуль JSONStream NodeJS для получения дополнительной информации

Порядок ключей также имеет важное значение , Оформление заказа: ['snapshot', 'nodes', 'edges', 'trace_function_infos', 'trace_tree', 'samples', 'strings']

Смежные вопросы