Test Automation (自動化測試) 是CI (Continuous Integration, 持續整合) / CD (Continuous Deployment, 持續發佈) 的其中一環. 當程式修改後, 透過自動測試, 確保問題能盡快發現及修正.
Selenium 是一套Web Application Testing Framework, 對大好處是不用學習另一套Script Language 就可以寫到Test case / Test suit, 又可以透過不同的Web Driver 模擬不同的瀏覽器進行測試, 以確保JavaScript 在相同動作下於不同瀏覽器是否相容.
建立測試伺服器
- 安裝JDK.
於command prompt 中輸入以下指令, 檢查是否已經安裝JDK.java
若出現以下畫面, 即是JDK 已經安裝. 若沒有的話, 則需要自行下載及安裝.
- 下載Selenium Server.
進入https://www.seleniumhq.org/download/, 選取Download version, 以取得最新版本.
在示範中會將檔案放到c:\Selenium\jar 中.
- 建立啟動Selenium Server 指令檔.
於c:\Selenium 中建立指令檔, 命名為startup.bat, 並輸入以下指令.@echo off set SeleniumPath="C:\Selenium\jar\selenium-server-standalone-3.11.0.jar" java -jar %SeleniumPath%
- 執行指令檔.
於command prompt 中輸入以下指令.C:\Selenium\startup.bat
若見到以下畫面, 表示執行成功.
建立單元測試
Selenium 本身支援Java, C# 等程式語言. 而在此示範中, 會利用Java 叫用Chrome, 並讀取其title 及URL.
- 建立 Test Project.
在 Eclipse中選取 File > New > Project, 並於Project Name 中輸入 TestProject.
- 下載Selenium Client.
進入https://www.seleniumhq.org/download/, 選取Java 並按Download, 以取得最新版本.
在示範中會將檔案解壓到c:\Selenium\webDriver 中.
- 下載Web Driver.
進入https://www.seleniumhq.org/download/, 選取Google Chrome Driver, 並 並下載最新版本. - 在Project 中引用Selenium Client.
於Test Project 中按右鍵, 選取Property > Java Build Path > Add External JARs…, 選取所有c:\Selenium\webDriver 的檔案後, 然後按OK.
- 建立Builder class. 用作處理所有WebDriver 的建立工作.
於Test Project /src 中右鍵, 選取New > Class, 於 Name 中輸入 WebDriverBuilder, 然後輸入以下代碼.import java.nio.file.Files; import java.nio.file.InvalidPathException; import java.nio.file.Path; import java.nio.file.Paths; import org.openqa.selenium.chrome.ChromeDriver; public class WebDriverBuilder { protected static final String WEBDRIVER_CHROME_DRIVER = "webdriver.chrome.driver"; private static final String WEBDRIVE_CHROME_DEFAULT_PATH = "C:\\Selenium\\webDrivers\\chromedriver_win32\\chromedriver.exe"; public static ChromeDriver BuildChromeDriver() { return BuildChromeDriver(WEBDRIVE_CHROME_DEFAULT_PATH); } public static ChromeDriver BuildChromeDriver(String driverPath) { Path _driverPath = Paths.get(driverPath); if (!Files.exists(_driverPath)) throw new InvalidPathException(_driverPath.toString(), "Invalid file path found."); System.setProperty(WEBDRIVER_CHROME_DRIVER, _driverPath.toString()); ChromeDriver driver = new ChromeDriver(); return driver; } }
- 建立Test class, 以啟動瀏覽器進行測試.
於Test Project /src 中右鍵, 選取 New > Class, 於 Name 中輸入 SampleTest, 然後輸入以下代碼.import WebDriverBuilder; import org.openqa.selenium.WebDriver; public class SampleTest { private static final String TEST_URL="http://www.google.com"; public static void main(String[] args) { WebDriver driver = WebDriverBuilder.BuildChromeDriver(); System.out.println("Test URL: "+TEST_URL); driver.get(TEST_URL); String title=driver.getTitle(); String currentUrl=driver.getCurrentUrl(); System.out.println("Current page title: "+title); System.out.println("Current URL: "+currentUrl); driver.close(); } }
- 測試程式.
於Test Project 中選取SampleTest.java, 按右鍵並選取Run As > Java Application , 於Console 見到以結果, 代表測試成功.
參考資料
- Java SE Download, Oracle,
http://www.oracle.com/technetwork/java/javase/downloads/index.html - Selenium Project,
https://www.seleniumhq.org/ - Chrome Driver, Google,
https://sites.google.com/a/chromium.org/chromedriver/ - Selenium Tutorial, TutorialsPoint,
https://www.tutorialspoint.com/selenium/index.htm - Selenium Tutorial, ToolSQA,
http://toolsqa.com/selenium-tutorial/
Leave a Reply