Как драйвер 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). Драйвер работает в той же системе, что и браузер. Это может быть или не быть той же самой системой, в которой выполняются сами тесты, и это пример прямого взаимодействия.

basic_comms.png


Удаленный WebDriver

Однако связь с браузером также может быть удаленной через Selenium Server или RemoteWebDriver. RemoteWebDriver работает в той же системе, что и драйвер и браузер.

basic_comms_driver_webdriver.png


Селеновая сетка

Удаленное общение также может происходить с использованием Selenium Server или Selenium Grid, которые, в свою очередь, взаимодействуют с драйвером в хост-системе.

remote_comms_server.png


Связь с помощью команд

Протокол WebDriver состоит из команд. Каждый HTTP-запрос с методом и шаблоном, определенным в спецификации, представляет собой одну команду, и, следовательно, каждая команда выдает один HTTP-ответ. В ответ на команду удаленный конец выполнит серию действий, известных как шаги удаленного конца. Они обеспечивают последовательность действий, которые выполняет удаленный конец при получении определенной команды.


Обработка команд

Удаленный конец - это HTTP-сервер, читающий запросы от клиента и записывающий ответы, как правило, через сокет TCP. В спецификации связь моделируется как передача данных между конкретным локальным концом и удаленным концом.с подключением, к которому удаленный конец может записывать байты и читать байты. Точные детали того, как это соединение работает и как оно устанавливается, - это большая тема, выходящая за рамки этого вопроса. После того, как соединение было установлено, удаленный конец должен читать байты из соединения, пока полный HTTP-запрос не может быть построен из данных. Если невозможно создать полный HTTP-запрос, удаленный конец должен либо закрыть соединение, либо вернуть HTTP-ответ с кодом состояния 500, либо вернуть ошибку с кодом ошибки unknown error.

Чтобы упростить поиск, я перенесу сюда ответ из комментариев.

Драйвер Chrome управляет браузером Chrome через протокол Chrome DevTools, основанный на websocket. Эта статья дает более подробную информацию

Другие вопросы по тегам