Вы совершенно правы как насчет протокола, так и JsonWireProtocol. Здесь стоит упомянуть, что ранее все реализации WebDriver, которые взаимодействовали с браузер или сервер RemoteWebDriver должны использовать общий проводной протокол. Этот проводной протокол определяет веб-службу RESTful с использованием JSON через HTTP.
JSON Wire Protocol - это абстрактная спецификация того, как поведение автоматизации, такое как нажатие или ввод текста, или что угодно, на самом деле хотите, чтобы ваш сценарий автоматизации отображался на selenium или appium или HTTP-запросы и ответы. Протокол будет предполагать, что API WebDriver был «сплющен», но ожидается, что клиентские реализации будут использовать более объектно-ориентированный подход, как продемонстрировано в существующем API Java. Проводной протокол реализован в парах запрос / ответ «команды» и «ответы».
JSON (JavaScript Object Notation) - это облегченный формат для обмена данными между клиентом и сервером. Приложения используют объекты JSON для отправки и получения данных между собой в веб-мире. Структура данных JSON является отраслевым стандартом и может использоваться для отправки и получения данных в виде пары «ключ-значение» < / а>. Некоторые говорят, что это очень хорошая альтернатива XML. Мы можем сохранять файлы JSON с расширением .json.
Как выглядит JSON?
Простой файл json выглядит, как показано ниже, и существует множество онлайн-редакторов, которые можно использовать для редактирования и проверки структуры JSON.
{
"Student":{
"FirstName":"Pawan",
"LastName":"Garia",
"IdNumber":"12345",
"City" : "New Delhi",
"EmailID" : "[email protected]" }
}
Почему JSON Wire Protocol был используется в первую очередь?
Реализовать архитектуру клиент-сервер, которая может дать нам следующие преимущества.
- Вы пишете тест на любом языке программирования.
- Вы можете выполнить или запустить тестирование облачных сервисов, таких как SauceLabs, BrowserStack или настройка Selenium Grid.
- Вы не обязаны запускать тест только на локальном компьютере.
- Различные драйверы (FirefoxDriver, ChromeDriver) могут быть созданы для браузеров и реализованы отдельно с использованием одних и тех же стандартов.
Таким образом, для реализации клиент-сервер требуется заранее подготовить стандартный набор спецификаций, чтобы сервер и клиент были синхронизированы друг с другом в отношении того, что приходит и уходит по запросу и ответу. Это что-то вроде языка общения друг с другом. Итак, нам нужна какая-то общая спецификация для решения такого рода требований, и решение было HTTP.
Почему HTTP - это решение?
HTTP является стандартом для Интернета и может быть хорошей основой для спецификации. Каждый язык программирования имеет хорошие библиотеки HTTP, которые можно использовать для создания клиента и сервера для запросов и ответные звонки.
Как протокол JSON Wire работал с HTTP?
HTTP-запрос и ответ обычно делаются из запросов GET и POST, что выходит за рамки этого обсуждения.
Текущий статус
С точки зрения Selenium, JSON Wire Protocol сейчас устарел, а WebDriver W3C Living Document - это новая реализация.
Связь через WebDriver
Протокол WebDriver состоит из команд. Каждый HTTP-запрос с методом и шаблоном, определенным в спецификации, представляет собой один <сильный > command, и, следовательно, каждая команда создает один HTTP-ответ. В ответ на команду удаленный конец выполнит ряд действий. известные как шаги удаленного завершения. Они обеспечивают последовательность действий, которые выполняет удаленный конец при получении определенной команды.
Обработка команд
Удаленный конец - это HTTP-сервер, читающий запросы от клиента и записывающий ответы, как правило, через TCP-сокет. В спецификации взаимодействие моделируется как передача данных между конкретным локальным концом и удаленный конец с подключением, к которому удаленный конец может записывать байты и читать байты. Точные детали того, как это соединение работает и как оно устанавливается, - это большая тема, выходящая за рамки этого вопроса. После того, как соединение было установлено, удаленный конец должен читать байты из соединения, пока полный HTTP-запрос не может быть построен из данных. Если невозможно создать полный HTTP-запрос, удаленная сторона должна либо закрыть соединение, либо вернуть HTTP-ответ с кодом состояния 500, либо вернуть ошибку с кодом ошибки unknown error.
Outro
Разница между механизмами JsonWireProtocol и новые стандарты в W3C Living Document при использовании Selenium
29.01.2019