QA-конференция heisenbug.ru
ChromeDriver Jailbreak, Александр Баяндин (Badoo)
Chrome DevTools — один из наиболее полезных инструментов веб-разработчика. Он позволяет получать исчерпывающую информацию о странице и запросах и эмулировать мобильные браузеры на медленных устройствах. ChromeDriver использует тот же Chrome Debugging Protocol, что и DevTools для реализации Selenium JSON Wire Protocol взаимодействия с браузером. Этот протокол описывает самый базовый набор методов для взаимодействия со страницей, который несомненно уже всего набора методов, доступных в DevTools. В своём докладе Александр расскажет о том, как можно использовать (почти) всю мощь DevTools в Selenium-тестах и как сделать их отладку наиболее удобной.
70. Chrome Debugging Protocol
✦ Реализован поверх WebSocket
✦ Используется в Chrome DevTools
https://developer.chrome.com/devtools/docs/debugger-protocol
71.
72.
73. Тело ответа в DevTools
Network.getResponseBody
Returns content served for the given request.
PARAMETERS
requestId: RequestId
RETURN OBJECT
body: string
base64Encoded: boolean
https://chromedevtools.github.io/debugger-protocol-viewer/1-2/Network/#method-getResponseBody
75. Решение
✦ Включить Performance log в тестах
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
37
76. Решение
✦ Включить Performance log в тестах
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
✦ Добавить ответы в HAR
37
119. Финальная логика
✦ Включить Performance log в тестах
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
✦ Добавить ответы в HAR
58
120. Финальная логика
✦ Передать chrome-wrapper в binary в ChromeOptions
✦ Включить Performance log в тестах
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
✦ Добавить ответы в HAR
59
135. Финальная логика
✦ Передать chrome-wrapper в binary в ChromeOptions
✦ Включить Performance log в тестах
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
✦ Добавить ответы в HAR
68
136. Финальная логика
✦ Передать chrome-wrapper.sh в binary в ChromeOptions
✦ Включить Performance log в тестах
✦ Отправить “правильный” Network.enable
✦ Получить тело ответа для всех запросов
✦ Конвертировать Performance log в HAR
✦ Добавить ответы в HAR
69
143. Варианты ответа
✦ Остановить тест за шаг до падения, последний шаг
проделать вручную (с открытыми DevTools)
✦ Поставить прокси
✦ ???
75
144. Варианты ответа
✦ Остановить тест за шаг до падения, последний шаг
проделать вручную (с открытыми DevTools)
✦ Поставить прокси
✦ Можно получить HAR
76
166. Варианты ответа
✦ Остановить тест за шаг до падения, последний шаг
проделать вручную (с открытыми DevTools)
✦ Поставить прокси
✦ Можно получить HAR
91
167. Варианты ответа
✦ Остановить тест за шаг до падения, последний шаг
проделать вручную (с открытыми DevTools)
✦ Поставить прокси
✦ Можно получить HAR
✦ В нетворке есть всё
92
236. Планы на будущее
138
✦ Научиться останавливаться на debugger / breakpoints
✦ Научиться получать данные Chrome Push Notification
237. Планы на будущее
138
✦ Научиться останавливаться на debugger / breakpoints
✦ Научиться получать данные Chrome Push Notification
✦ Поддержка Android
238. Планы на будущее
138
✦ Научиться останавливаться на debugger / breakpoints
✦ Научиться получать данные Chrome Push Notification
✦ Поддержка Android
✦ Поддержка Windows (для chrome-wrapper)
239. Планы на будущее
138
✦ Научиться останавливаться на debugger / breakpoints
✦ Научиться получать данные Chrome Push Notification
✦ Поддержка Android
✦ Поддержка Windows (для chrome-wrapper)
✦ Поддержка Firefox / Edge
241. Сегодня я многое понял…
✦ Как видеть HTTP запросы во время прохождения теста
139
242. Сегодня я многое понял…
✦ Как видеть HTTP запросы во время прохождения теста
✦ Как видеть как идёт тест
139
243. Сегодня я многое понял…
✦ Как видеть HTTP запросы во время прохождения теста
✦ Как видеть как идёт тест
✦ Использовать любые Chrome Debugging Protocol методы
139