哪個版本的 Firefox 與 Selenium 相容


Firefox 與 Selenium 的相容性一直是一個難題。在 Selenium3 之前,Firefox 曾經是 Selenium 的預設瀏覽器。但在 Selenium3 之後,透過顯式使用 GeckoDriver,我們可以在 FireFox 中初始化指令碼。

  • FireFox 僅在之前的版本(即 v47 及更早版本)中得到完全支援。Selenium WebDriver 版本 2.53 與 Mozilla FireFox 版本 47.0+ 不相容。在 v47.0 之後,FireFox 提供了 GeckoDriver。GeckoDriver 是一個代理,用於使用與 W3C WebDriver 相容的客戶端與基於 gecko 的瀏覽器(即 Mozilla FireFox)進行互動。

  • GeckoDriver 充當 Selenium WebDriver 測試和 Mozilla FireFox 瀏覽器之間的橋樑。它是一個內置於 FireFox 瀏覽器的網頁瀏覽器引擎。

  • 但問題來了,為什麼只使用 GeckoDriver 而不是 FireFox 的預設驅動程式?答案是 GeckoDriver 使用 W3C WebDriver 協議與 Selenium 通訊,這允許 Selenium 開發人員允許同一個 WebDriver 在多個瀏覽器版本中執行。

  • 讓我們看看,對於 Selenium 2.53.1 及之前的版本,Selenium 如何與 FireFox 一起工作。

public class FirefoxTest {
   @Test
   public void startFfBrowser() {
      WebDriver driver = new FirefoxDriver();
      driver.get("https://tutorialspoint.tw");
   }
}

執行程式碼後,FireFox 會開啟 google.com。但現在如果我們在 Selenium3 及更高版本中執行相同的程式碼行,我們將得到一個執行時錯誤。

“java.lang.IllegalStateException: 驅動程式可執行檔案的路徑必須由 webdriver.gecko.driver 系統屬性設定;”

因此,要在 FireFox v47 及更高版本中執行指令碼,GeckoDriver 就派上用場了。

public class FirefoxTest {
   @Test
   public void startFfBrowser () {
      System.setProperty("webdriver.gecko.driver",Path of your GeckoDriver.exe file);
      FirefoxDriver driver = new FirefoxDriver();
      driver.get("https://tutorialspoint.tw");
   }
}

我們可以透過直接在系統的環境變數中設定 geckodriver 路徑並使用傳統方式例項化 web 驅動程式來改進此程式碼。

更新於: 2019-08-07

830 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.