Каковы преимущества использования Marionette FirefoxDriver вместо старого Selenium FirefoxDriver для тестировщика Selenium?

В последние недели было много шума об этом новом FirefoxDriver под названием Marionette. Чтобы использовать Firefox с Selenium, мы использовали «старый» Selenium FirefoxDriver. Начиная с Firefox 48.0, потребуется использовать этот новый FirefoxDriver, разработанный Mozilla.

Я понимаю, что необходимо изменить это направление, чтобы каждый браузер поддерживал и развивал свои драйверы, а также чтобы драйверы были независимы от Selenium. Кроме того, предполагается, что если Mozilla разработает собственный драйвер, будет быстрее и проще исправлять проблемы и развивать функции.

Мой вопрос: для тех, кто создает автоматизированные тесты с использованием платформы Selenium, есть ли какая-либо польза от использования Marionette вместо «старого» поддерживаемого Selenium FirefoxDriver? _(например, лучшая производительность, лучшая совместимость. ..)


person Lorenzo Fidalgo    schedule 12.08.2016    source источник
comment
Потенциальные близкие избиратели, у которых может возникнуть соблазн предположить, что вопрос слишком широк. Это не. Существует простая техническая причина, по которой необходим этот новый подход. Я изложил это в своем ответе.   -  person JimEvans    schedule 12.08.2016


Ответы (1)


Основное преимущество использования предоставленного Mozilla решения Geckodriver на основе Marionette заключается в том, что оно работает с версиями Firefox 48 и выше. Устаревший драйвер, предоставляемый и поддерживаемый проектом Selenium, не работает для Firefox 48 или выше и никогда не будет работать для этих версий Firefox.

Устаревший драйвер реализован как расширение Firefox. Это расширение устанавливается в профиль, используемый драйвером, когда WebDriver запускает Firefox. В Firefox 48 представлены две новые функции, отключающие это расширение браузера. Первая — это так называемая функция «электролиза», или многопроцессорность Firefox. Электролиз меняет то, как расширения должны работать с браузером, так, что команда Selenium не тратит время на полное понимание.

Второе, более важное требование заключается в том, что все расширения браузера должны быть подписаны Mozilla, прежде чем браузер разрешит их загрузку. Эта последняя функция была в Firefox в нескольких версиях, но, начиная с 48, ее больше нельзя отключить. Расширение браузера WebDriver создает несколько серьезных проблем безопасности для браузера Firefox и поэтому не будет подписано службой безопасности Mozilla. Это, в свою очередь, делает расширение неработоспособным, и, таким образом, Selenium больше не может взаимодействовать с Firefox. Решение на основе Marionette, разработанное и поддерживаемое в первую очередь Mozilla, благословлено ими для использования в автоматизации Firefox, и, как таковое, несет обязательство, что оно будет продолжать работать с будущими версиями в будущем.

Таким образом, основным преимуществом использования Marionette с Firefox 48 и выше является то, что он будет работать, тогда как другие решения не будут работать.

person JimEvans    schedule 12.08.2016
comment
если Geckodriver на основе Marionette не будет использоваться в качестве расширения для Firefox, каков будет его механизм для управления Firefox? любой простой пример, пожалуйста.. Любая небольшая идея об электролизе в драйвере марионетки была бы в порядке; например, как драйвер захватывает браузер Firefox. - person Prashanth Sams; 13.08.2016
comment
Механизм, используемый для управления браузером, теперь является частью самого Firefox. Он встроен в браузер, поэтому его поддерживает Mozilla. Код их драйвера полностью с открытым исходным кодом, а geckodriver предоставляемый ими исполняемый файл действует как транслятор для HTTP-запросы из WebDriver для использования протокола связи Marionette через TCP, который браузер понимает изначально. Однако, если вы используете Selenium, пользователю не нужно заботиться о специфике; он будет работать, используя тот же код, который работал раньше. - person JimEvans; 13.08.2016
comment
@JimEvans Я обнаружил, что селен 3 по умолчанию использует драйвер марионетки. Итак, как все может работать с существующим набором кода. Я столкнулся с похожей проблемой - person Surabhil Sergy; 18.10.2016