14

지난 주 Marionette라는 새로운 FirefoxDriver에 대한 많은 소음이있었습니다. Firefox를 Selenium과 함께 사용하려면 이전의 "Selenium FirefoxDriver"를 사용했습니다. Firefox 48.0부터 Mozilla에서 개발 한 새로운 FirefoxDriver를 사용해야합니다.Selenium 테스터 용 이전 Selenium FirefoxDriver 대신 Marionette FirefoxDriver를 사용하면 어떤 이점이 있습니까?

모든 브라우저가 해당 드라이버를 지원하고 개발할 수 있도록 해당 방향으로 변경해야하며 Selenium과 독립적 인 드라이버를 얻는 것이 필요하다는 점을 알고 있습니다. 게다가 모질라가 자체 드라이버를 개발한다면 문제를 수정하고 기능을 개발하는 것이 더 빠르고 쉽습니다.

Selenium 프레임 워크를 사용하여 자동 테스트를 작성한 사람들은 입니다. "이전"Selenium 지원 FirefoxDriver 대신 Marionette를 사용하면 어떤 이점이 있습니까? _ (더 나은 성능, 더 나은 호환성 ...)

+4

질문을하기를 유혹 할 가능성이있는 잠재적 인 유권자는 "너무 광범위합니다." 그렇지 않습니다. 이 새로운 접근법이 필요한 이유는 간단하고 기술적 인 이유가 있습니다. 나는 대답에 그것을 설명했다. – JimEvans

답변

23

Mozilla가 제공하는 Marionette 기반 Geckodriver 솔루션의 주요 이점은 Firefox 48 이상 버전에서 작동한다는 것입니다. Selenium 프로젝트에서 제공하고 관리하는 레거시 드라이버는 Firefox 48 이상에서는 작동하지 않으며 이러한 버전의 Firefox에서는 작동하지 않습니다.

레거시 드라이버는 Firefox 확장으로 구현됩니다. 이 확장은 WebDriver가 Firefox를 시작할 때 드라이버가 사용하는 프로파일에 설치됩니다. Firefox 48은이 브라우저 확장을 비활성화 한 두 가지 새로운 기능을 도입했습니다. 첫 번째는 소위 "전기 분해"기능 또는 다중 프로세스 Firefox입니다. 전기 분해는 Selenium 팀이 완전히 이해할 시간을 가지지 않은 방식으로 확장 기능이 브라우저를 다루는 방식을 변경합니다.

더 중요한 두 가지 요구 사항은 모든 브라우저 확장 프로그램이 브라우저에서로드를 허용하기 전에 모질라에 의해 서명되어야한다는 것입니다. 이 후자의 기능은 여러 버전의 Firefox에서 사용되었지만 48부터는 더 이상 비활성화 할 수 없습니다. WebDriver 브라우저 확장 기능은 Firefox 브라우저에 대한 몇 가지 유효한 보안 문제를 소개하며 Mozilla의 보안 팀에 의해 서명되지 않습니다. 이렇게하면 확장 기능이 작동하지 않게되므로 Selenium은 더 이상 Firefox와 통신 할 수 없습니다. 처음부터 모질라에 의해 개발되고 유지되는 마리오 네트 기반 솔루션은 파이어 폭스 자동화에 사용하기 위해 그들에 의해 축복을 받았다. 앞으로 출시 될 차세대 버전에서도 계속 작동 할 것이라는 약속을한다.

그래서 Firefox 48 이상에서 Marioette을 사용하면 얻는 주된 이점은 다른 솔루션과 달리 작동한다는 것입니다.

+0

Marionette 기반 Geckodriver가 Firefox 용 확장 프로그램으로 사용되지 않을 경우 Firefox를 구동하는 메커니즘은 무엇입니까? 어떤 간단한 예제 pls .. 마리오네트 드라이버의 전기에 대한 작은 아이디어는 괜찮을 것이다; 운전자가 파이어 폭스 브라우저를 어떻게 인수하는지. –

+2

브라우저를 구동하는 데 사용되는 메커니즘이 이제 Firefox 자체의 일부입니다. 브라우저에 내장되어 있기 때문에 모질라가 관리합니다. 그들의 드라이버 코드는 전적으로 오픈 소스 (https://github.com/mozilla/geckodriver)이며, 이들이 제공하는'geckodriver' 실행 파일은 WebDriver의 HTTP 호출을 통해 Marionette 통신 프로토콜을 사용하는 변환기 역할을합니다 브라우저가 기본적으로 이해하는 TCP. 그러나 Selenium을 사용하고 있다면 사용자가 세부 사항을 신경 쓸 필요가 없습니다. 이전에 작동했던 동일한 코드를 사용하여 작동합니다. – JimEvans

+0

@JimEvans 셀레늄 3가 기본적으로 마리오네트 드라이버를 사용하고 있음을 발견했습니다. 그렇다면 어떻게하면 기존 코드 세트로 작업 할 수 있을까요? [나는 비슷한 문제에 직면하고있다] (http://stackoverflow.com/questions/40086011/how-to-set-a-specific-download-location-in-mozilla-marionette-web-driver) –