2017-02-22 66 views
2

Selenium3支持可執行文件geckodriver與其他驅動程序一樣啓動Mozilla Firefox;但可執行文件geckodriverMozilla Firefox < v47不兼容。使用Selenium 3.0與Firefox V <47

那麼我們如何才能實現向後兼容瀏覽器V<47我,我們如何才能使用firefox瀏覽器V<47Selenium3

回答

0

您應該使用舊FirefoxDriver,只要確保,如果你使用的是RemoteDriver,因爲我不知道它是默認啓用虛假設定木偶(caps.setCapability(FirefoxDriver.MARIONETTE, false);

該驅動程序不需要任何.exe文件,只需在您的代碼中使用import org.openqa.selenium.firefox.FirefoxDriver;即可使用它。

driver = new FirefoxDriver(); 

,或者如果您使用網格:

driver = RemoteWebDriver(url, DesiredCapabilities.firefox()); 
3

禁用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

  1. 在硒2.53的情況下,你不需要做任何額外的東西(無需安裝geckodriverselenium 2.53使用由defaultFirefox driver)。
  2. 硒3.0,我們必須用System.setProperty設置geckodriver路徑(如geckodriverSelenium 3.0default驅動程序Firefox),並設置marionettefalse,所以geckodriver功能將被禁用,Firefox的默認驅動程序使用。

參考文獻:

  1. https://github.com/mozilla/geckodriver#supported-firefoxen
  2. https://github.com/mozilla/geckodriver/issues/224
  3. https://stackoverflow.com/a/40658421/2575259
+0

我們是否有某種靈活性,像FF V> 47和FF相同的代碼<47或代碼放置一些條件來使通用代碼? – Jimmy

+0

您可以使用'getVersion'方法。所以添加if else塊來實現你的任務。更多細節在這裏http://stackoverflow.com/questions/12556163/get-browser-version-using-selenium-webdriver –

+1

我想遷移到Selenium 3.X,但geckodriver是主要障礙。現在我知道該如何處理了。你的解決方案節省我的一天謝謝 – cezarypiatek

相關問題