Chrome Dev Tools API и Selenium WebDriver
Я экспериментирую с Selenium Web Driver для автоматизации моих интеграционных тестов браузера. Я вижу, что Chrome Dev Tools поставляется с консольным API для вызова определенных функций инструмента dev изнутри JavaScript.
В идеале из моего интеграционного теста Java/JUnit я мог бы запустить профилировщик памяти Chrome Dev Tool (и, возможно, некоторые другие инструменты), запустить мои тесты WebDriver (создание экземпляра браузера Chrome, манипулирование элементами DOM и т. Д.), А затем остановить профилировщик, затем проверьте результаты профилировщика, чтобы увидеть, есть ли утечки памяти.
Эта концепция даже осуществима, или я иду на обед? Почему, почему нет?
Похоже, API уже имеет console.profile()
начать сеанс профилирования, и console.profileEnd()
, Так что теоретически я мог бы заставить WebDriver вызывать эти два метода и запускать тесты между ними.
Я думаю, что недостающее звено затем программно взаимодействует с результатами сеанса профилирования...
2 ответа
На самом деле вы можете использовать протокол отладчика, как упомянуто выше @loislo - вам может быть полезна ссылка https://developer.chrome.com/devtools/docs/debugger-protocol
Просто добавьте флаг при открытии Chrome и отладьте его удаленно!:)
Chrome DevTools состоит из двух частей: внешнего интерфейса с пользовательским интерфейсом и внутреннего интерфейса в собственном коде средства визуализации. Эти части работают друг с другом по протоколу. Протокол описан в файле protocol.js
Chrome может работать в режиме удаленной отладки, когда он предоставляет сокет tcp, который можно использовать для взаимодействия с серверной частью DevTools. Эта функция активно используется в наборе инструментов телеметрии браузера Chrome.
Этот набор инструментов был написан на py thon, и мы синхронизируем его с текущей версией протокола. В наборе инструментов есть код для работы с частью профилировщика кучи и другими частями DevTools.