Selenium WebDriver-在Firefox瀏覽器上運行測試

在本節中,我們將學習如何在Firefox瀏覽器上運行Selenium測試腳本。在繼續本節之前,先來了解一下Gecko Driver的基礎知識。

Gecko Driver是什麼?

Gecko一詞指的是由Mozilla基金會開發的Gecko瀏覽器引擎,它用作爲Mozilla瀏覽器的一部分。
Gecko Driver是Selenium和Firefox瀏覽器中測試之間的鏈接。 它充當W3C WebDriver兼容客戶端(Eclipse,Netbeans等)之間的代理,以與基於Gecko的瀏覽器(Mozilla Firefox)進行交互。

Marionette(下一代FirefoxDriver)默認從Selenium 3開啓。Selenium使用W3C Webdriver協議向GeckoDriver發送請求,GeckoDriver將它們轉換爲名爲Marionette的協議。 即使使用的是舊版本的Firefox瀏覽器,Selenium 3也希望通過webdriver.gecko.driver設置驅動程序可執行文件的路徑。

注意:Selenium 3已升級爲現在使用Marionette驅動程序啓動Firefox驅動程序,而不是之前支持的默認初始化。

假如要實現以下一個測試用例,嘗試在Firefox瀏覽器中自動執行以下測試方案。

  • 啓動Firefox瀏覽器。
  • 打開URL : www.yiibai.com
  • 單擊「搜索」文本框
  • 輸入值「Java教程」
  • 單擊「搜索」按鈕。

在一個Java工程中創建第二個測試用例。

第1步 - 右鍵單擊「src」文件夾,然後從 New -> Class 創建一個新的類文件。
將類的名稱命名爲 - 「Second」 ,然後單擊「完成」按鈕。
Selenium

第2步 - 在瀏覽器中打開URL:

然後根據當前正在使用的操作系統單擊相應的GeckoDriver下載版本。 在這裏下載適用於Windows 64位的GeckoDriver版本。
Selenium

下載的文件將採用壓縮格式,將內容解壓縮到方便的目錄中(如:D:/software/webdriver)。

在編寫測試腳本之前,先來了解如何在Selenium中初始化GeckoDriver。 有三種方法可以初始化GeckoDriver:

1. 使用DesiredCapabilities
首先,需要爲Gecko Driver 設置系統屬性。

System.setProperty("webdriver.gecko.driver","D:\\software\\webdriver\\geckodriver.exe" );

下面是使用DesiredCapabilities類設置gecko驅動程序的代碼。

DesiredCapabilities capabilities = DesiredCapabilities.firefox();  
capabilities.setCapability("marionette",true);

以下是完整的示例代碼 -

System.setProperty("webdriver.gecko.driver","D:\\software\\webdriver\\geckodriver.exe" );  
DesiredCapabilities capabilities = DesiredCapabilities.firefox();  
capabilities.setCapability("marionette",true);  
WebDriver driver= new FirefoxDriver(capabilities);

2. 使用 marionette 屬性:

Gecko Driver也可以使用marionette屬性進行初始化。

System.setProperty("webdriver.firefox.marionette","D:\\software\\webdriver\\geckodriver.exe");

此方法不需要 DesiredCapabilities 的代碼。

3. 使用Firefox選項:

Firefox 47或更高版本將 marionette 驅動程序作爲遺留系統。 因此,可以使用Firefox選項調用 marionette 驅動程序,如下所示。

FirefoxOptions options = new FirefoxOptions();  
options.setLegacy(true);

第3步 - 編寫測試代碼,爲每個代碼塊嵌入了註釋,以便清楚地解釋這些步驟。

package com.yiibai;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Second {
    public static void main(String[] args) {

        // System Property for Gecko Driver
        System.setProperty("webdriver.gecko.driver", "D:\\software\\WebDriver\\geckodriver.exe");
        System.setProperty("webdriver.firefox.bin", "D:\\Program Files\\Mozilla Firefox\\firefox.exe");

        WebDriver driver = (WebDriver) new FirefoxDriver();

        // Launch Website
        driver.navigate().to("http://www.yiibai.com/");

        // Click on the Custom Search text box and send value
        driver.findElement(By.name("kw")).sendKeys("java教程");
        driver.findElement(By.id("submit")).click();

        // Click on the Search button
        driver.findElement(By.className("article-list-item-txt")).click();
    }
}

第4步 - 右鍵單擊Eclipse代碼,然後選擇:Run As -> Java Application

第5步 - 上述測試腳本的輸出將顯示在Firefox瀏覽器中。
Selenium