Разница между механизмами JsonWireProtocol и новыми стандартами в W3C Living Document при использовании Selenium
Мне интересно, каковы различия между механизмами в JsonWireProtocol (статус: OBSOLETE) и W3C Living Document от 31 декабря 2019 года (новый стандарт) при использовании Selenium для тестов пользовательского интерфейса. Я знаю, что Selenium использовал следующее: Когда мы создаем новый экземпляр драйвера (C#):
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
IWebDriver driver = new ChromeDriver();
мы фактически делаем запрос POST /session к серверу selenium. После этого через JsonWireProtocol и, например:
POST /session/:sessionId / element /:id / click, мы можем найти и щелкнуть по определенному элементу или выполнить другие действия с другими запросами...
Так что же нового сейчас? Может кто-нибудь объяснить новый стандарт?! Я буду очень рад, если кто-нибудь сделает это подробно!
1 ответ
Протокол WebDriver Wire
Первоначальный черновик WebDriver Wire Protocol был предложением о том, что все реализации WebDriver, которые будут взаимодействовать с браузером или сервером RemoteWebDriver, должны использовать общий проводной протокол. Этот проводной протокол определяет веб-службу RESTful, использующую JSON через HTTP.
Согласно первоначальному предложению и практике некоторые из объектов JSON были следующими:
- Объект WebElement JSON: представление JSON WebElement для передачи по сети. Этот объект будет иметь следующие свойства:
- Возможности Объект JSON: не все реализации сервера будут поддерживать каждую функцию WebDriver. Таким образом, клиент и сервер должны использовать объекты JSON со свойствами, перечисленными ниже, при описании функций, поддерживаемых сеансом.
- Желаемые возможности: объект JSON с возможностями, отправляемый клиентом, с описанием возможностей, которыми должен обладать новый сеанс, созданный сервером. Любые пропущенные ключи неявно указывают на то, что соответствующая возможность не имеет значения. Подробнее на DesiredCapabilities.
- Фактические возможности: объект JSON возможностей, возвращаемый сервером, описывающий, какие функции фактически поддерживает сеанс. Любые пропущенные ключи неявно указывают на то, что соответствующая возможность не поддерживается.
- так далее
Спецификация WebDriver W3C
С введением спецификации WebDriver W3C были определены следующие стандарты:
- Удаленные концы WebDriver должны предоставлять протокол проводной связи, совместимый с HTTP, где конечные точки сопоставляются с различными командами.
- Хотя этот стандарт определяет только протокол удаленного конца, он не предъявляет требований к реализации локальных оконечных устройств.
- Предполагается, что локальные узлы будут совместимы только в той степени, в которой они могут говорить по протоколу удаленного конца; к их открытому пользовательскому API не предъявляется никаких требований.
Команды
The WebDriver protocol is organised into commands. Each HTTP request with a method and template defined in this specification represents a single command, and therefore each command produces a single HTTP response. In response to a command, a remote end will run a series of actions known as remote end steps. These provide the sequences of actions that a remote end takes when it receives a particular command.
Endpoints
The table of endpoints below lists the method and URI template for each endpoint node command and their current support in ChromeDriver.
Outro
What is the difference between Protocol and Json Wire Protocol