Итак, у меня есть вопрос о Selenium, в частности о том, как он работает с различными браузерами. Я знаю, что когда мы говорим о Chrome взаимодействиях, у нас есть 4 слоя (грубо говоря):
Слой 1 - наш исходный код, который использует все функциональные возможности, предоставленные нам библиотекой Selenium
Уровень 2 - библиотека Selenium, которая в основном отправляет HTTP-запросы процессу WebDriver и анализирует его ответы, возвращаясь обратно к экземплярам, оберткам и абстракциям удобного класса уровня 1.
Уровень 3 - это процесс WebDriver, работающий на хост-ОС, взаимодействующий с экземпляром Chrome с помощью протокола websockets и Chrome протокола DevTools, работающего над ним.
Слой 4 - это экземпляр целевого браузера Chrome.
Так что мне все ясно ... если мы не изменим целевой браузер на Firefox или Safari. Я бы предположил, что мы больше не используем Chrome протокол Devtools для связи между процессом веб-драйвера и экземпляром браузера.
Но тогда как процесс веб-драйвера взаимодействует с браузерами на основе Gecko и WebKit?