Selenium3
支持可執行文件geckodriver
與其他驅動程序一樣啓動Mozilla Firefox
;但可執行文件geckodriver
與Mozilla Firefox < v47
不兼容。使用Selenium 3.0與Firefox V <47
那麼我們如何才能實現向後兼容瀏覽器V<47
我,我們如何才能使用firefox
瀏覽器V<47
與Selenium3
。
Selenium3
支持可執行文件geckodriver
與其他驅動程序一樣啓動Mozilla Firefox
;但可執行文件geckodriver
與Mozilla Firefox < v47
不兼容。使用Selenium 3.0與Firefox V <47
那麼我們如何才能實現向後兼容瀏覽器V<47
我,我們如何才能使用firefox
瀏覽器V<47
與Selenium3
。
您應該使用舊FirefoxDriver
,只要確保,如果你使用的是RemoteDriver,因爲我不知道它是默認啓用虛假設定木偶(caps.setCapability(FirefoxDriver.MARIONETTE, false);
)
該驅動程序不需要任何.exe
文件,只需在您的代碼中使用import org.openqa.selenium.firefox.FirefoxDriver;
即可使用它。
driver = new FirefoxDriver();
,或者如果您使用網格:
driver = RemoteWebDriver(url, DesiredCapabilities.firefox());
禁用geckodriver
能力使可用於FirefoxDriver
。
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");
DesiredCapabilities d = new DesiredCapabilities();
d.setCapability("marionette", false); // to disable marionette, by default true
WebDriver driver = new FirefoxDriver(d);
一些背景知識geckodriver.exe和Firefox版本的支持:
從geckodriver
github上頁:
Firefox 47 is explicitly not supported
所以,如果你想使用<= Firefox 47
版本,使用Firefox driver
但不是geckodriver
。
geckodriver
爲selenium 2.53
使用由default
Firefox driver
)。System.setProperty
設置geckodriver
路徑(如geckodriver
是Selenium 3.0
的default
驅動程序Firefox
),並設置marionette
到false
,所以geckodriver
功能將被禁用,Firefox的默認驅動程序使用。參考文獻:
我們是否有某種靈活性,像FF V> 47和FF相同的代碼<47或代碼放置一些條件來使通用代碼? – Jimmy
您可以使用'getVersion'方法。所以添加if else塊來實現你的任務。更多細節在這裏http://stackoverflow.com/questions/12556163/get-browser-version-using-selenium-webdriver –
我想遷移到Selenium 3.X,但geckodriver是主要障礙。現在我知道該如何處理了。你的解決方案節省我的一天謝謝 – cezarypiatek