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.