14

W ubiegłych tygodniach było dużo hałasu na temat tego nowego FirefoxDriver o nazwie Marionetka. Aby korzystać z Firefoksa z Selenium, używaliśmy "starego" Selenium FirefoxDriver. Od Firefoksa 48.0 będzie wymagane korzystanie z tego nowego FirefoxDriver opracowanego przez Mozillę.Jakie są zalety korzystania z Marionette FirefoxDriver zamiast starego Selenium FirefoxDriver dla testera Selenium?

Rozumiem, że jest potrzebny do zmiany w tym kierunku, aby każda przeglądarka wspiera i rozwija swoje sterowniki i uzyskać sterowniki niezależna od selenu. Poza tym, przypuszcza się, że jeśli Mozilla opracuje swój własny sterownik, będzie to szybsze i łatwiejsze rozwiązywanie problemów i rozwijanie funkcji.

Moje pytanie brzmi: dla tych, którzy tworzą zautomatyzowane testy przy użyciu struktury Selenium, jest jakaś korzyść z używania Marionetki zamiast "starej" obsługiwanej przez Selenium przeglądarki FirefoxDriver? _ (Taka jak lepsza wydajność, lepsza kompatybilność ...)

+4

Potencjalni bliscy wyborcy, którzy mogą ulec pokusie, by zadać to pytanie, są "zbyt szerokie". To nie jest. Jest prosty i techniczny powód, dla którego to nowe podejście jest wymagane. Przedstawiłem to w mojej odpowiedzi. – JimEvans

Odpowiedz

23

Główną zaletą korzystania z rozwiązania Geckodriver opartego na marionetce jest to, że działa on w wersjach Firefox 48 i wyższych. Starsza wersja sterownika dostarczona i obsługiwana przez projekt Selenium nie działa w przeglądarce Firefox w wersji 48 lub nowszej i nigdy nie będzie działać w przypadku tych wersji Firefoksa.

Kierowca spuścizna jest zaimplementowany jako rozszerzenie Firefox. To rozszerzenie jest instalowane w profilu używanym przez sterownik, gdy WebDriver uruchamia Firefox. Firefox 48 wprowadził dwie nowe funkcje, które wyłączają to rozszerzenie przeglądarki. Pierwszą z nich jest funkcja "elektrolizy" lub wieloprocesorowy Firefox. Elektroliza zmienia sposób, w jaki rozszerzenia muszą radzić sobie z przeglądarką w taki sposób, w jaki zespół Selenium nie poświęcił czasu na pełne zrozumienie.

Drugim, bardziej istotnym wymogiem jest to, że wszystkie rozszerzenia przeglądarki muszą być podpisane przez Mozillę, zanim przeglądarka pozwoli im załadować. Ta ostatnia funkcja była w Firefoksie dla kilku wersji, ale począwszy od 48, nie można jej już wyłączyć. Rozszerzenie przeglądarki WebDriver wprowadza kilka ważnych problemów związanych z zabezpieczeniami przeglądarki Firefox i jako takie nie zostaną podpisane przez zespół bezpieczeństwa Mozilli. To z kolei powoduje, że rozszerzenie nie działa, a zatem Selenium nie może już komunikować się z Firefoksem. Rozwiązanie oparte na marionetce, opracowywane i utrzymywane przez Mozillę w pierwszej kolejności, jest przez nich wykorzystywane do automatyzacji Firefoksa i jako takie zobowiązuje się kontynuować pracę z przyszłymi wersjami.

Główną zaletą używania marionetki z Firefoksem 48 i nowszymi jest to, że będzie działać, podczas gdy inne nie będą.

+0

jeśli Geckodriver oparty na marionetce nie zostanie użyty jako rozszerzenie Firefoksa, jaki byłby jego mechanizm sterowania firefox? każdy prosty przykład pls .. Każdy mały pomysł na elektrolizę w kierowcy marionetki byłby w porządku; np. jak sterownik przejmuje przeglądarkę Firefox. –

+2

Mechanizm używany do sterowania przeglądarką jest teraz częścią samej Firefoksa. Jest wbudowany w przeglądarkę, dlatego jest obsługiwany przez Mozillę. Ich kod sterownika jest w całości [open source] (https://github.com/mozilla/geckodriver), a wykonywany przez nich program 'geckodriver' działa jako tłumacz, aby odbierać połączenia HTTP z WebDrivera, aby użyć protokołu komunikacyjnego Marionette TCP, który przeglądarka rozumie natywnie. Jeśli jednak korzystasz z Selenium, nie musisz się martwić o szczegóły; będzie działać przy użyciu tego samego kodu, który działał wcześniej. – JimEvans

+0

@JimEvans Znalazłem selen 3 domyślnie używa sterownika marionetki. Jak więc rzeczy mogą działać z istniejącym zestawem kodu. [Mam do czynienia z podobnym problemem] (http://stackoverflow.com/questions/40086011/how-to-set-a-specific-download-location-in-mozilla-marionette-web-driver) –

Powiązane problemy