1.介紹 Part1:簡介
Selenium是一套完整的Web應用程序測試系統(tǒng),它包含了測試的錄制(Selenium
IDE)、編寫及運行(Selenium Remote
Control)和測試的并行處理(Selenium Grid)。Selenium的核心Selenium
Core基于JsUnit,完全由JavaScript編寫,因此可運行于任何支持JavaScript的瀏覽器上。
Part2:版本介紹
(1)、SeleniumIDE:一個Firefox的附加組件,結合Firefox可以實現(xiàn)錄制測試腳本,并在瀏覽器中模擬用戶真實操作進行回放。而且可以生成一些簡單的基于Selenium Remote
Control模式的簡單代碼。
(2)、Selenium Core:整個測試機制的核心部分,即有assertion(斷言)機制的test suite runner。它由一些純js代碼組成,可以運行在windows/linux的不同browser上
Selenium Remote Control:一個代理與控制端,可代替Selenium core/
Selenium IDE的client端(相當于通過編程來實現(xiàn)一切),是支持多語言的。
2.安裝
step0:前提,機器上有JDK1.5,eclipse,最好有能跑起來的web工程;
step1:下載地址http://seleniumhq.org/download/ 頁面中 Selenuium Client
Drivers下java版本的client 以及Selenium Server
step2:啟動 Selenium的server java -jar selenium-server.jar
3.測試
step1:在eclipse中新建一個java web工程,加入junit 和 selenium server 的jar包;
step2:新建java文件代碼如下:
package cn.edie;
import org.openqa.selenium.server.SeleniumServer;
import com.thoughtworks.selenium.DefaultSelenium;
import junit.framework.TestCase;
public class Selenium extends TestCase{
private DefaultSelenium
selenium;
private SeleniumServer server;
public void setUp() throws Exception {
String url = "http://www.google.com";
selenium = (DefaultSelenium) new DefaultSelenium("localhost", 4444,"*iexplore", url); //4444 is default
server port
selenium.start();
server = new SeleniumServer();
}
protected void tearDown() throws Exception {
selenium.stop();
server.stop();
}
public void testGoogle() throws Throwable {
selenium.open("http://www.google.com/webhp?hl=en");
assertEquals("Google", selenium.getTitle());
selenium.type("q", "2012");
assertEquals("2012", selenium.getValue("q"));
selenium.click("btnG");
selenium.waitForPageToLoad("5000");
assertEquals("2012 - Google
Search", selenium.getTitle());
}
}
|
step3: 在文件上點右鍵 run as->junit test 運行彈出瀏覽器窗口,自動測試。
4.用法:
網(wǎng)上找到的用法。其他介紹:http://liujianguangaaa.blog.163.com/blog/static/3689529420103982551410/
1、測試文本輸入框
假設頁面上有一個文本輸入框,我們要測試的內容是 在其中輸入一些內容,然后點擊一個按鈕,看看頁面的是否跳轉
到需要的頁面。
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.type("xpath=//input[@name='userID']", "test-user");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
上面的代碼是這個意思:
1、調用 selenium.open 方法,瀏覽器會打開相應的頁面
2、使用 type 方法來給輸入框輸入文字
3、等待頁面載入
4、看看新的頁面標題是不是我們想要的。
2、測試下拉框
java 代碼
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.select("xpath=//SELECT[@name='SBBUSYO']", "index=1");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
可以看到,我們可以使用 select 方法來確定選擇下拉框中的哪個選項。
select 方法還有很多用法,具體去看看文檔吧。
3、測試check box
java 代碼
public void test1() {
selenium.open("http://xxx.xxx.xxx/yyy");
selenium.check("xpath=//input[@name='MEICK_000']");
selenium.click("xpath=//input[@type='button']");
selenium.waitForPageToLoad("2000");
assertEquals(selenium.getTitle(), "Welcome");
}
|
我們可以使用 check 方法來確定選擇哪個radio button
4、得到文本框里的文字
java 代碼
assertEquals(selenium.getValue("xpath=//input[@name='WNO']"), "1");
|
getValue 方法就是得到文本框里的數(shù)值,可不是 getText 方法,用錯了可就郁悶了。
5、判斷頁面是否存在一個元素
java 代碼
assertTrue(selenium.isElementPresent("xpath=//input[@name='MEICK_000']"));
|
一般這個是用來測試當刪除一些數(shù)據(jù)后,頁面上有些東西就不會顯示的情況。
6、判斷下拉框里選擇了哪個選項
java 代碼
assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"),"1");
|
這個可以用來判斷下拉框顯示的選項是否是期望的選項。
7、如果有 alert 彈出對話框怎么辦?
這個問題弄了挺長時間,可以這樣來關閉彈出的對跨框:
java 代碼
if(selenium.isAlertPresent()) {
selenium.getAlert();
}
|
其實當調用 selenium.getAlert() 時,就會關閉 alert 彈出的對話框。
也可以使用 System.out.println(selenium.getAlert()) 來查看對跨框顯示的信息。
在測試的時候,有的人會顯示許多alert 來查看運行時的數(shù)據(jù),那么我們可以用下面的方式來關閉那些 alert:
java 代碼
while(selenium.isAlertPresent()) {
selenium.getAlert();
}
|
8、如何測試一些錯誤消息的顯示?
java 代碼
assertTrue(selenium.getBodyText().indexOf("錯誤消息")>=0);
|
切記: getBodyText 返回的時瀏覽器頁面上的文字,不回包含html 代碼的,如果要顯示html 代碼,用下面這個:
java 代碼
System.out.println(selenium.getHtmlSource());
|
以上就是最常用的幾個方法了,例如 click, type, getValue 等等。
還有就是一定要學習 xpath, 其實xpath 也可以有“與、或、非”的操作:
java 代碼
selenium.check("xpath=//input[(@name='KNYKBN')and(@value='Y')]");
|
附1:DefaultSelenium方法
http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/DefaultSelenium.html
附2:XPath教程 http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html |