今天,我們開始介紹基於開源Selenium工具的Web網站自動化測試。
Selenium包含了3大元件,分別為:
1. Selenium IDE
基於Chrome和Firefox擴充套件的整合開發環境,可以錄製、回放和匯出不同語言的測試指令碼。
2. WebDriver
包括一組為不同語言、瀏覽器提供的類庫和驅動,用程式設計的方式來識別和操作網頁及其元素。
3. Selenium Grid
提供主從架構的、分散式測試執行環境,由Hub(主控)和Node(節點)組成。
老版本的Selenium還包括一個已經被廢棄的RC元件,它的原理是通過代理的方式向被測試的網頁中注入JavaScript程式碼,完成對頁面的操控。當前,RC已被WebDriver元件所替代。大家如在網上看到於此有關的文章,可直接忽略。
使用Selenium IDE錄製自動化測試指令碼
- 首先安裝Chrome瀏覽器,然後從這裡安裝Selenium IDE外掛;
- 點選瀏覽器右上角的擴充套件圖示(類似1個拼圖的符號),選擇開啟Selenium IDE;
- 在彈出的視窗中,點選Record a new test in a new project選單項;
- 輸入專案名稱(如project1),點選確定;
- 在BASE URL文字框中,輸入百度網址https://www.baidu.com;
- 點選Start Recording,開始錄製指令碼;
- 在彈出的百度網站視窗中,完成以下操作:
7.1. 在關鍵字文字框中,輸入禪道;
7.2. 點選搜尋按鈕;
7.3. 在搜尋結果中,點選第1條的標題。 - 切換到錄製工具視窗,點選右上角紅色圖示,停止錄製;
- 輸入指令碼名稱(如script1),進入以下編輯器視窗:
- 點選指令碼名稱(如script1)右側的更多圖示(為縱向排列的3個點),選擇Export選單項;
- 此處我們以內嵌Java註釋的方式,對指令碼做簡單的介紹。生成的指令碼如下,已忽略其中用於等待視窗的waitForWindow方法和呼叫。
// 匯入Java類庫,如selenium、junit等
import org.openqa.selenium.WebDriver;
// 生成的JUnit測試類
public class Test1Test {
// 類級別的私有變數
private WebDriver driver;
private Map<String, Object> vars;
JavascriptExecutor js;
// 使用JUnit的@Before註解,定義在測試執行前,需執行的初始化行為。
@Before
public void setUp() {
// 初始化WebDriver物件
driver = new ChromeDriver();
// 初始化JS執行器物件,用於在瀏覽器中執行Javascript程式碼。
js = (JavascriptExecutor) driver;
}
// 使用JUnit的@After註解,定義在測試完成後,需執行的清理動作。
@After
public void tearDown() {
// 退出並清理WebDriver物件
driver.quit();
}
// 使用JUnit的@Test註解,標註此方法為一個測試方法。
@Test
public void test1() {
// 開啟百度網站首頁
driver.get("https://www.baidu.com/");
// 設定瀏覽器視窗大小為1440x875
driver.manage().window().setSize(new Dimension(1440, 875));
// 找到id為kw的(文字框)控制元件,在裡面輸入“禪道”。
driver.findElement(By.id("kw")).sendKeys("禪道");
// 找到id為su的(按鈕)控制元件,並點選。
driver.findElement(By.id("su")).click();
// 找到指定內容的連結,並點選。
driver.findElement(By.ByPartialLinkText("開源專案管理軟體")).click();
}
}