測試開發之自動化篇-使用Selenium IDE錄製指令碼

陳琦發表於2021-10-21

今天,我們開始介紹基於開源Selenium工具的Web網站自動化測試。

Selenium包含了3大元件,分別為:
1. Selenium IDE
基於Chrome和Firefox擴充套件的整合開發環境,可以錄製、回放和匯出不同語言的測試指令碼。

2. WebDriver
包括一組為不同語言、瀏覽器提供的類庫和驅動,用程式設計的方式來識別和操作網頁及其元素。

3. Selenium Grid
提供主從架構的、分散式測試執行環境,由Hub(主控)和Node(節點)組成。

老版本的Selenium還包括一個已經被廢棄的RC元件,它的原理是通過代理的方式向被測試的網頁中注入JavaScript程式碼,完成對頁面的操控。當前,RC已被WebDriver元件所替代。大家如在網上看到於此有關的文章,可直接忽略。

使用Selenium IDE錄製自動化測試指令碼

  1. 首先安裝Chrome瀏覽器,然後從這裡安裝Selenium IDE外掛;
  2. 點選瀏覽器右上角的擴充套件圖示(類似1個拼圖的符號),選擇開啟Selenium IDE;
  3. 在彈出的視窗中,點選Record a new test in a new project選單項;
  4. 輸入專案名稱(如project1),點選確定;
  5. 在BASE URL文字框中,輸入百度網址https://www.baidu.com
  6. 點選Start Recording,開始錄製指令碼;
  7. 在彈出的百度網站視窗中,完成以下操作:
    7.1. 在關鍵字文字框中,輸入禪道
    7.2. 點選搜尋按鈕;
    7.3. 在搜尋結果中,點選第1條的標題。
  8. 切換到錄製工具視窗,點選右上角紅色圖示,停止錄製;
  9. 輸入指令碼名稱(如script1),進入以下編輯器視窗:
    image.png
  10. 點選指令碼名稱(如script1)右側的更多圖示(為縱向排列的3個點),選擇Export選單項;
  11. 此處我們以內嵌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();
  }

}

專題目錄

相關文章