Означает ли это, что Selenium.WebDriver взаимодействует напрямую с браузером Firefox, используя протокол Marionette?
Насколько я понимаю, когда вы устанавливаете System.setProperty("webdriver.firefox.marionette", "false");
в false или делаете FirefoxOptions options = new FirefoxOptions()
.setLegacy(true);
, это означает, что он использует устаревшее расширение (не марионетку и геккона), как описано в свойствах Firefox здесь
Marionette нельзя использовать без использования gecko (вернее, если вы хотите взаимодействовать с браузерами на основе gecko, вы должны использовать marionette ). В Marionette есть компонент gecko, который является сервером марионеток, как указано здесь< /а>
geckodriver, как написано на github, предоставляет API для связи с Браузеры Gecko
Эта программа предоставляет HTTP API, описанный протоколом WebDriver, для связи с браузерами Gecko.
для selenium 3.0 и более поздних версий марионетка включена по умолчанию, как указано здесь а>
Для получения дополнительной информации см. этот вопрос.
Если вам интересно узнать больше о взаимодействии клиент-сервер-геккон марионетки, посмотрите здесь
ИЗМЕНИТЬ:
исходный код geckodriver ниже указывает на geckodriver в разных местах в readme.md
geckodriver — это прокси для использования клиентов, совместимых с W3C WebDriver, для взаимодействия с браузерами на базе Gecko.
Привязки клиента Selenium получат двоичный исполняемый файл geckodriver из вашей [переменной окружения PATH
системы][PATH].
3. Поскольку geckodriver — это отдельный HTTP-сервер, который представляет собой полную удаленную реализацию [WebDriver], можно избежать использования удаленного сервера Selenium.
geckodriver переводит [команды], [ответы] и [ошибки] WebDriver в [протокол Marionette] и действует как прокси-сервер между [WebDriver] и [Marionette].
По умолчанию geckodriver пытается найти и использовать системную установку Firefox.
Итак, чтобы ответить на ваши вопросы, вот как это все работает
Языковые привязки Selenium reaches to
--> geckodriver.exe finds
--> системная установка Firefox (хотя это можно изменить) reaches to inbuilt
--> клиент-марионетка reaches to
--> сервер-марионетка reaches to
--> движок gecko браузера which inturn calls out
--> element.js,interaction.js,action.js,evaluate.js
в движке gecko в зависимости от того, что запрашивается привязками или клиентом.
person
user1207289
schedule
08.11.2017