Selenium 4 Architecture

How a Command Travels

Your Java test
  driver.findElement(By.id("email")).sendKeys("[email protected]")
         |
         |  Selenium Java client library turns it into an HTTP request (JSON)
         v
  POST /session/{id}/element/{elementId}/value   {"text":"[email protected]"}
         |
         v
  Browser driver  (chromedriver / geckodriver / msedgedriver)
         |
         |  native browser automation
         v
  Real browser (Chrome / Firefox / Edge) types into the email box

The W3C WebDriver Protocol

In Selenium 4 the client and the driver talk using the W3C WebDriver standard, an official web standard that every browser vendor implements. Earlier versions used the "JSON Wire Protocol" and needed translation. Being a standard means fewer browser differences and more stable tests.

PartWho makes it
Selenium client (selenium-java jar)Selenium project
chromedriverGoogle
geckodriverMozilla
msedgedriverMicrosoft
safaridriverApple (built into macOS)

Note: Selenium 4 also adds WebDriver BiDi (a two-way channel for console logs and network events). You will see it in the advance level.