在本節中,將學習如何建立第一個Selenium自動化測試指令碼。
在此測試下,將自動執行以下測試操作:
接下來將逐步建立測試用例,以便詳細了解每個元件。
第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("易百教學");