3 回答

TA貢獻1872條經(jīng)驗 獲得超4個贊
在版本45(推送至版本47)之前,用于自動化Firefox的驅(qū)動程序是每個客戶端附帶的擴展。但是,此擴展名已被刪除,可能是由于政策更改所致,該政策現(xiàn)在要求所有擴展名均由Mozilla簽名。
Marionette是Firefox附帶/隨附的新驅(qū)動程序。該驅(qū)動程序具有自己的協(xié)議,該協(xié)議與Selenium / WebDriver協(xié)議不直接兼容。
的壁虎驅(qū)動器(以前稱為導線)是實施硒/ webdriver的協(xié)議的應用服務器。它轉(zhuǎn)換Selenium命令并將其轉(zhuǎn)發(fā)給Marionette驅(qū)動程序。
對于Java客戶端,默認行為是使用Gecko驅(qū)動程序,但是可以將其替換為將舊版擴展用作具有以下webdriver.firefox.marionette屬性的驅(qū)動程序:
System.setProperty("webdriver.firefox.marionette", "false");
或具有以下marionette能力FirefoxOptions:
FirefoxOptions options = new FirefoxOptions()
.setLegacy(true);
WebDriver driver = new FirefoxDriver(options);
// or with a remote server
WebDriver driver = new RemoteWebDriver(remoteUrl, options.toDesiredCapabilities());
或直接與DesiredCapabilities:
DesiredCapabilities capa = DesiredCapabilities.firefox();
capa.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(capa);
// or with a remote server
WebDriver driver = new RemoteWebDriver(remoteUrl, capa);
要定義Gecko驅(qū)動程序的位置,請將驅(qū)動程序放置在PATH環(huán)境變量中存在的文件夾中,或者在屬性中定義位置webdriver.gecko.driver:
System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
或使用在命令行中分配的屬性啟動遠程服務器:
java -Dwebdriver.gecko.driver="C:\\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar

TA貢獻1829條經(jīng)驗 獲得超6個贊
Marionette是最新Firefox版本附帶/附帶的新驅(qū)動程序。
但是,Geckodriver是使用W3C WebDriver兼容客戶端與基于Gecko的瀏覽器進行交互的代理。Geckodriver提供了由WebDriver協(xié)議描述的HTTP API,以與Gecko瀏覽器進行通信,例如47以上的Firefox版本。
System.setProperty("webdriver.gecko.driver","path of/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
如果仍然遇到問題(由于FF版本不兼容),則可以使用以下功能:
DesiredCapabilities capabilities=DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new FirefoxDriver(capabilities);
添加回答
舉報