Selenium WebDriver第一個測試案例


在本節中,將學習如何建立第一個Selenium自動化測試指令碼。

在此測試下,將自動執行以下測試操作:

  • 呼叫Firefox瀏覽器。
  • 開啟網址: www.baidu.com
  • 點選百度搜尋文字框。
  • 輸入關鍵字 - 「易百教學」
  • 單擊「搜尋」按鈕。

接下來將逐步建立測試用例,以便詳細了解每個元件。

第1步 - 啟動Eclipse IDE並開啟在本教學的上一節(組態Selenium WebDriver)中建立的專案「Demo_Test」 。在「Demo_Test」 測試套件下的「FirstTestCase.java」 檔案中編寫第一個Selenium測試指令碼。

注意:要在Selenium中呼叫瀏覽器,必須下載特定於該瀏覽器的可執行檔案。 例如,Chrome瀏覽器使用名為ChromeDriver.exe 的可執行檔案實現WebDriver協定。 這些可執行檔案在您的系統上啟動伺服器,而該伺服器又負責在Selenium中執行測試指令碼。

第2步 - 在瀏覽器中開啟網址:

第3步 - 點選對應作業系統版本的「geckodriver」連結,並安您所使用使用的當前作業系統下載,在編寫此文章時,所使用的時Win10 64位元作業系統,所以下載:
geckodriver-v0.23.0-win64.zip
。下載的檔案將採用壓縮格式,將內容解壓縮到一個方便的目錄中。

第4步 - 需要為百度搜尋文字框和搜尋按鈕等網路元素新增唯一標識,以便通過測試指令碼自動執行這些標識。 這些唯一標識與一些命令/語法一起組態以形成定位器。 使定位器在Web應用程式的上下文中定位和標識特定的Web元素。

用於查詢唯一標識元素的方法涉及檢查HTML程式碼。

在Chrome瀏覽器中開啟網址 : https://www.baidu.com 。右鍵單擊百度搜尋文字框,然後選擇Inspect Element

它將啟動一個視窗,其中包含測試盒開發中涉及的所有特定程式碼。選擇id元素的值,即「kw」

下面給出了在Selenium WebDriver中通過「id」 定位元素的Java語法。

driver.findElement(By.id (<element ID>));

以下是在測試指令碼中查詢百度搜尋文字框的完整程式碼。

driver.findElement(By.id ("kw"));

現在,右鍵單擊百度搜尋按鈕(百度一下)並選擇Inspect Element ,如下圖所示:

它將啟動一個視窗,其中包含開發百度搜尋按鈕所涉及的所有特定程式碼 ,如下圖所示:

選擇id元素的值,即「su」 ,如下圖所示:

下面給出了在Selenium WebDriver中通過「name」定位元素的Java語法。

driver.findElement(By.name (<element name>));

以下是在測試指令碼中查詢百度搜尋按鈕的完整程式碼。

// driver.findElement(By.name ("btnK")); 這裡用不上。
driver.findElement(By.id ("su"));

第5步 - 接下來編寫程式碼,為每個程式碼塊寫上注釋,以便清楚地解釋這些步驟。

package com.yiibai;

import java.io.File;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.GeckoDriverService;

public class FirstTestCase {
    public static void main(String[] args) {
        // declaration and instantiation of objects/variables
        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.baidu.com/");
        driver.get("http://www.baidu.com/");
        //driver.manage().window().maximize();
        String titile = driver.getTitle();

        System.out.println("title is => " + titile);

         // Click on the search text box and send value  
        driver.findElement(By.id("kw")).sendKeys("易百教學");  

        // Click on the search button  
        driver.findElement(By.id("su")).click();  

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //driver.quit();
    }
}

一些可能遇到的錯誤:

未設定時java.lang.IllegalStateException報錯:

System.setProperty("webdriver.gecko.driver", "D:\\software\\geckodriver.exe");
//若無法開啟Firefox瀏覽器,可設定Firefox瀏覽器的安裝路徑(未設定路徑時path報錯)
System.setProperty("webdriver.firefox.bin", "D:\\software\\firefox、、firefox.exe");

Eclipse程式碼視窗如下所示:

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

第7步 - 上述測試指令碼將啟動Firefox瀏覽器,並執行搜尋。如下圖所示 -

程式碼的說明

匯入包/語句
在java中,import語句用於匯入另一個包中存在的類。 簡單來說,import關鍵字用於將內建和使用者定義的包匯入java原始檔。

  • org.openqa.selenium.WebDriver - 參照範例化新Web瀏覽器所需的WebDriver介面。
  • org.openqa.selenium.chrome.ChromeDriver - 參照將Chrome專用驅動程式範例化到WebDriver類範例化的瀏覽器所需的ChromeDriver類。

範例化物件和變數
通過以下方式範例化驅動程式物件:

WebDriver driver=new ChromeDriver();


啟動網站

要啟動新網站,在WebDriver中使用navigate().to()方法。

driver.navigate().to("https://www.tw511.com/");
// 或者
driver.get("http://www.baidu.com/");

單擊元素
在WebDriver中,使用者互動是通過使用Locators來執行的,在本教學的後續對談中討論。 目前,以下程式碼範例用於定位和解析特定Web元素中的值。

driver.findElement(By.id("su")).sendKeys("易百教學");