Selenium 2.0 與 WebDriver


在撰寫文件的此時,Selenium 2.0尚在Beta 2,其包括了WebDriver介面與一些實作類別,使用WebDriver實作類別,無需啟動Selenium Server,每個WebDriver實例,實際驅動一個瀏覽器。例如,若想驅動Firefox瀏覽器,可以如下:
WebDriver driver = new FirefoxDriver();

使用WebDriver,可以用更方便的API來查找元素與操作瀏覽器。例如查找 測試 JSP 中的按鈕並按下:
driver.findElement(By.cssSelector("input[value='送出']")).click();

使用WebDriver非常直覺,以 結合 Selenium RC 中的例子,若改寫為WebDriver的話,可以如下:
package test.cc.openhome;

import static org.junit.Assert.*;

import com.thoughtworks.selenium.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.server.SeleniumServer;

public class AddJSPTest {
private static WebDriver driver;

@BeforeClass
public static void setUpClass() throws Exception {
driver = new FirefoxDriver();

}

@AfterClass
public static void tearDownClass() throws Exception {
driver.quit();
}

@Test
public void testAddJSP() throws Exception {
driver.get("http://localhost:8080/BookmarkOnline/add.jsp");
//selenium.open("/BookmarkOnline/add.jsp");
driver.findElement(By.cssSelector("input[value='送出']")).click();
String pageSource = driver.getPageSource();

assertTrue(pageSource.contains("新增書籤失敗"));
assertTrue(pageSource.contains("網址不能空白"));
assertTrue(pageSource.contains("請輸入網頁標題"));

driver.findElement(By.name("url")).sendKeys("www.javaworld.com.tw");
driver.findElement(By.cssSelector("input[value='送出']")).click();
pageSource = driver.getPageSource();

assertTrue(pageSource.contains("新增書籤失敗"));
assertTrue(pageSource.contains("請輸入網頁標題"));

driver.findElement(By.name("url")).sendKeys("www.javaworld.com.tw");
driver.findElement(By.name("title")).sendKeys("JavaWorld@TW");
driver.findElement(By.cssSelector("input[value='送出']")).click();
pageSource = driver.getPageSource();

assertTrue(pageSource.contains("新增書籤成功"));
assertTrue(pageSource.contains("http://www.javaworld.com.tw"));
assertTrue(pageSource.contains("JavaWorld@TW"));
assertTrue(pageSource.contains("程式設計"));
}
}

如果對Selenium 2.0與WebDriver有興趣,可以看看 Selenium 2.0 and WebDriver 線上說明 。