Selenium在作一些操作前,必須先指定目標(Target)元素,指定目標元素有幾種方式。例如 結合 Selenium RC 的例子中:
selenium.type("url", "www.javaworld.com.tw");
      
      type()指令第一個參數指定了"url",這是最常用的一個方式,其完整形式其實是:
identifier=url
      
      identifier可用來指定id或name屬性的值符合的元素,先比對id,沒有的話再比對name,先找到的元素為主。如果標籤有id或name屬性,則可以明確指定。例如:
id=someForm
name=url
      
      name=url
如果想以超鏈結的文字進行比對。例如比對:
<a href="https://openhome.cc">Openhome</a>
      
      則可以如下:
link=Openhome
      
      如果你熟悉JavaScript的DOM API,也可以使用JavaScript的DOM API語法來存取。例如:
dom=document.getElementById('someForm')
dom=document.getElementsByTagName('input')[0]
dom=document.forms[0]
document.forms[0].username
      
      dom=document.getElementsByTagName('input')[0]
dom=document.forms[0]
document.forms[0].username
如果你熟悉CSS選擇器語法,也可以使用它來指定元素。例如:
css=#someForm
css=input[name="username"]
      
      css=input[name="username"]
例如原本在 結合 Selenium RC 中的例子有:
selenium.click("//input[@value='送出']");
      
      這是XPath語法的指定方式,若要改為CSS語法可以如下:
selenium.click("css=input[value='送出']");
      
      若要改為DOM API的方式,則可以如下:
selenium.click("document.forms[0].elements[4]");
      
      指定元素的方式很多樣化,看你熟悉哪種方式而定,你可以參考 Locating Elements 或 Selenium Reference 了解更多語法說明。
至於可操作的指令,全規範在com.thoughtworks.selenium.Selenium介面中,你可以查看API文件說明,或看看 Selenium Reference 的內容。
以 使用 CookieManager 中的例子而言,若想改用Selenium來測試,則可以如下:
package test.cc.openhome;
import static org.junit.Assert.*;
import com.thoughtworks.selenium.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.server.SeleniumServer;
public class CookieTest {
    private static Selenium selenium;
    private static SeleniumServer seleniumServer;
    
    @BeforeClass
    public static void setUpClass() throws Exception {
        seleniumServer = new SeleniumServer();
        seleniumServer.start();
        
    }
    
    @Before
    public void setUp() {
        // 每次測試重新開啟瀏覽器
        selenium = new DefaultSelenium("localhost", 4444, 
                "*firefox", "http://localhost:8080/CookieDemo/");
        selenium.start();
    }
    
    @After
    public void tearDown() {
        // 每次測試完關閉瀏覽器
        selenium.stop();
    }
    
    @AfterClass
    public static void tearDownClass() throws Exception {
        seleniumServer.stop();
    }
    @Test
    public void testCookie() throws Exception {
        selenium.open("/CookieDemo/login.html");
        selenium.type("user", "caterpillar");
        selenium.type("passwd", "123456");
        selenium.click("login");
        selenium.click("//input[@value='送出']");
        selenium.waitForPageToLoad("30000");
        assertTrue(selenium.isTextPresent("caterpillar已登入"));
        // 是否接收到Cookie
        assertEquals("caterpillar", selenium.getCookieByName("user"));
    }
    
    @Test
    public void testAutoLogin() throws Exception {
        // 建立Cookie
        selenium.createCookie("user=caterpillar", 
                              "path=/CookieDemo/,max_age=3600");
        // 直接請求index.view,測試是否自動登入
        selenium.open("/CookieDemo/index.view");
        assertTrue(selenium.isTextPresent("caterpillar已登入"));
    }
}

