Как драйвер Chrome взаимодействует с браузером Chrome?
Это говорит
ChromeDriver - это автономный сервер, реализующий стандарт W3C WebDriver.
Похоже, что стандарт W3C WebDriver определяет только интерфейс между программой автоматизации и Chromedriver. Chromedriver действует как HTTP-сервер для получения команды от программы автоматизации.
Но как ChromeDriver взаимодействует с Chrome?
Все еще через протокол HTTP?
Если да, то где мы можем получить подробную документацию? И какой компонент внутри Chrome отвечает за обработку команды из Chromedriver? Он построен в Chrome или просто является расширением Chrome?
1 ответ
В основе Selenium лежит WebDriver, интерфейс удаленного управления, позволяющий осуществлять самоанализ и управлять пользовательскими агентами. WebDriver предоставляет независимый от платформы и языка проводной протокол как способ для внепроцессных программ удаленно указывать поведение веб-браузеров, следовательно, наборы инструкций могут быть взаимозаменяемыми во многих браузерах.
Selenium WebDriver относится как к языковым привязкам, так и к реализациям отдельного управляющего кода браузера и обычно называется WebDriver. WebDriver - это API и протокол, определяющий не зависящий от языка интерфейс для управления поведением веб-браузеров. Каждый браузер поддерживается определенной реализацией WebDriver, называемой драйвером. Драйвер - это компонент, ответственный за делегирование полномочий браузеру, а также за обмен данными с Selenium и браузером.
Части и части
При минимальных требованиях WebDriver общается с браузером через драйвер, и связь является двухсторонней:
- WebDriver передает команды браузеру через драйвер
- Получает информацию обратно по тому же маршруту.
ChromeDriver
ChromeDriver - это автономный сервер, реализующий стандарт W3C WebDriver. ChromeDriver доступен для Chrome на Android и Chrome на ПК (Mac, Linux, Windows и ChromeOS). Драйвер работает в той же системе, что и браузер. Это может быть или не быть той же самой системой, в которой выполняются сами тесты, и это пример прямого взаимодействия.
Удаленный WebDriver
Однако связь с браузером также может быть удаленной через Selenium Server или RemoteWebDriver. RemoteWebDriver работает в той же системе, что и драйвер и браузер.
Селеновая сетка
Удаленное общение также может происходить с использованием Selenium Server или Selenium Grid, которые, в свою очередь, взаимодействуют с драйвером в хост-системе.
Связь с помощью команд
Протокол WebDriver состоит из команд. Каждый HTTP-запрос с методом и шаблоном, определенным в спецификации, представляет собой одну команду, и, следовательно, каждая команда выдает один HTTP-ответ. В ответ на команду удаленный конец выполнит серию действий, известных как шаги удаленного конца. Они обеспечивают последовательность действий, которые выполняет удаленный конец при получении определенной команды.
Обработка команд
Удаленный конец - это HTTP-сервер, читающий запросы от клиента и записывающий ответы, как правило, через сокет TCP. В спецификации связь моделируется как передача данных между конкретным локальным концом и удаленным концом.с подключением, к которому удаленный конец может записывать байты и читать байты. Точные детали того, как это соединение работает и как оно устанавливается, - это большая тема, выходящая за рамки этого вопроса. После того, как соединение было установлено, удаленный конец должен читать байты из соединения, пока полный HTTP-запрос не может быть построен из данных. Если невозможно создать полный HTTP-запрос, удаленный конец должен либо закрыть соединение, либо вернуть HTTP-ответ с кодом состояния 500, либо вернуть ошибку с кодом ошибки unknown error.
Чтобы упростить поиск, я перенесу сюда ответ из комментариев.
Драйвер Chrome управляет браузером Chrome через протокол Chrome DevTools, основанный на websocket. Эта статья дает более подробную информацию