網站自動化測試程式Selenium RC 升級到 WebDriver
這篇文章主要說明使用 Selenium網站自動化測試時,
Selenium RC 第一代與Selenium Webdriver 第二代有什麼差異?
當你接手的網站自動化測試程式是 Selenium RC 第一代的時候要如何順利移轉到 Selenium WebDriver?
最後,我們也舉一個程式範例說明。
Selenium RC vs WebDriver
架構上的差異
主要的差異在於 selenium RC 必須啟動一個 Web proxy
程式語言與瀏覽器之間的溝通透過這個 Web Proxy。
相對來說,WebDriver的出現之後,就不再需要這個 Web proxy。
Selenium RC |
Selenium WebDriver |
圖檔摘要Guru99 |
WebDriver 的優勢與缺點
- WebDriver 由於不需要透過 WebProxy 直接用 WebDriver 與程式語言和瀏覽器溝通,所以速度比Selenium RC 還要快
- WebDriver 可以模擬比較真實人輸入的狀況,例如偵測網頁元件的屬性,再進行相關的輸入動作。
- WebDriver 也提供HTMLunit 的測試方式,可以不需要啟動瀏覽器測試。
WebDriver的缺點
- 當瀏覽器有新版的時候,WebDriver 需要相對應的更新才能使用。
- Selenium RC 可以自動產生測試報告結果,相對WebDriver來說,這部分需要靠程式語言 unitTest才有辦法完成
目前主流的架構都是採用 Selenium WebDriver,Selenium RC 漸漸沒有使用
如何從Selenium RC 移植到 Selenium WebDriver?
我們主要透過”WebDriverBackedSelenium“!
舉例如下,原本利用Selenium RC開發的測試程式
[pastacode lang=”java” message=”” highlight=”” provider=”manual”]
import org.junit.*;
public class SeleniumRC {
Selenium selenium;
@Before
public void setup(){
selenium = new DefaultSelenium("localhost",4444,"*chrome","http://www.google.com");
selenium.start();
}
@Test
public void test_cases_here(){
}
@After
public void teardown(){
selenium.stop();
}
}
[/pastacode]
主要有三個更改
1. 宣告WebDriver變數
WebDriver driver
2. setup的部分
@Before
public void setup(){
driver = new FirefoxDriver();
selenium = new WebDriverBackedSelenium(driver, http://www.google.com/)
}
3. teardown的部分
@After
public void teardown(){
driver.quit();
}
WebDriver vs RC 程式對照
紅色地方為相異之處
WebDriver | RC |
String baseUrl = “http://www.google.com”;WebDriver driver = new FirefoxDriver(); Selenium selenium = new WebDriverBackedSelenium(driver,baseUrl); selenium.open(“/”); selenium.click(“name=q”); // rest of the test code |
String baseUrl = “ttp://www.google.com”; String remoteControl = “localhost”; Int port = 4444; String browser = “*firefox”; Selenium selenium = new DefaultSelenium(remoteControl, port , browser ,baseUrl); selenium.start(); selenium.open(“/”); selenium.click(“name=q”); // rest of the test code |