Selenium 使用介紹

轉帖作爲學習之用

Selenium 是 thoughtworks公司的一個集成測試的強大工具。最近參與了一個系統移植的項目,正好用到這個工具,

把一些使用心得分享給大家,希望大家能多多使用這樣的強大的,免費的工具,來保證我們的質量。

Selenium 的文檔現存的不少,不過都太簡單了。使用Selenium的時候,我更多的是直接去看API文檔,好在API不錯,

一個一個看,就能找到所需要的 :-)   官方網站:http://www.openqa.org/selenium/

好,下面進入正題!

一、Selenium 的版本

Selenium 現在存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。

selenium-core 是使用HTML的方式來編寫測試腳本,你也可以使用 Selenium-IDE來錄製腳本,但是目前Selenium-IDE
只有 FireFox 版本。

Selenium-RC 是 selenium-remote control 縮寫,是使用具體的語言來編寫測試類。

selenium-rc 支持的語言非常多,這裏我們着重關注java的方式。這裏講的也主要是 selenium-rc,因爲個人還是喜歡這種
方式 :-)

 二、一些準備工作

1、當然是下載 selenium 了,到 http://www.openqa.org/selenium/ 下載就可以了,記得選擇selenium-rc 的版本。

2、學習一下 xpath 的知識。有個教程:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html
     一定要學習這個,不然你根本看不懂下面的內容!

3、安裝 jdk1.5

 三、selenium-rc 一些使用方法

selenium-remote-control-0.9.0/server 目錄裏,我們運行 java -jar selenium-server.jar
之後你就會看到一些啓動信息。要使用 selenium-rc ,啓動這個server 是必須的。

當然,啓動的時候有許多參數,這些用法可以在網站裏看看教程,不過不加參數也已經足夠了。

selenium server 啓動完畢了,那麼我們就可以開始編寫測試類了!

我們先有個概念,selenium 是模仿瀏覽器的行爲的,當你運行測試類的時候,你就會發現selenium 會打開一個

瀏覽器,然後瀏覽器執行你的操作。

 好吧,首先生成我們的測試類:

java 代碼
  1. public class TestPage2 extends TestCase {   
  2.   private Selenium selenium;   
  3.   
  4.   protected void setUp() throws Exception {   
  5.      String url = “http://xxx.xxx.xxx.xxx/yyy”;   
  6.      selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort   
  7.                                 (), "*iexplore", url);   
  8.      selenium.start();   
  9.                
  10.      super.setUp();                        
  11.            
  12.   }   
  13.   
  14.   protected void tearDown() throws Exception {   
  15.            
  16.       selenium.stop();   
  17.       super.tearDown();   
  18.                
  19.   
  20.   }   
  21.   
  22. }  

代碼十分簡單,作用就是初始化一個 Selenium 對象。其中:
url : 就是你要測試的網站
localhost:  可以不是localhost,但是必須是 selenium server 啓動的地址
*iexplore :  可以是其它瀏覽器類型,可以在網站上看都支持哪些。

下面我就要講講怎麼使用selenium 這個對象來進行測試。

1、測試文本輸入框

假設頁面上有一個文本輸入框,我們要測試的內容是 在其中輸入一些內容,然後點擊一個按鈕,看看頁面的是否跳轉
到需要的頁面。

  1. public void test1() {   
  2.            
  3.     selenium.open("http://xxx.xxx.xxx/yyy");   
  4.            
  5.     selenium.type("xpath=//input[@name='userID']""test-user");   
  6.     selenium.click("xpath=//input[@type='button']");   
  7.     selenium.waitForPageToLoad("2000");   
  8.     assertEquals(selenium.getTitle(), "Welcome");   
  9. }  

上面的代碼是這個意思:
1、調用 selenium.open 方法,瀏覽器會打開相應的頁面
2、使用 type 方法來給輸入框輸入文字
3、等待頁面載入
4、看看新的頁面標題是不是我們想要的。

2、測試下拉框

java 代碼
  1. public void test1() {       
  2.                
  3.     selenium.open("http://xxx.xxx.xxx/yyy");       
  4.                
  5.     selenium.select("xpath=//SELECT[@name='SBBUSYO']""index=1");   
  6.     selenium.click("xpath=//input[@type='button']");       
  7.     selenium.waitForPageToLoad("2000");       
  8.     assertEquals(selenium.getTitle(), "Welcome");       
  9. }     

可以看到,我們可以使用 select 方法來確定選擇下拉框中的哪個選項。
select 方法還有很多用法,具體去看看文檔吧。

3、測試check box

java 代碼

  1. public void test1() {           
  2.                    
  3.     selenium.open("http://xxx.xxx.xxx/yyy");           
  4.                    
  5.     selenium.check("xpath=//input[@name='MEICK_000']");     
  6.     selenium.click("xpath=//input[@type='button']");           
  7.     selenium.waitForPageToLoad("2000");           
  8.     assertEquals(selenium.getTitle(), "Welcome");           
  9. }      

我們可以使用 check 方法來確定選擇哪個radio button

4、得到文本框裏的文字

java 代碼
  1. assertEquals(selenium.getValue("xpath=//input[@name='WNO']"), "1");  

getValue 方法就是得到文本框裏的數值,可不是 getText 方法,用錯了可就鬱悶了。

5、判斷頁面是否存在一個元素

java 代碼
  1. assertTrue(selenium.isElementPresent("xpath=//input[@name='MEICK_000']"));  

一般這個是用來測試當刪除一些數據後,頁面上有些東西就不會顯示的情況。

6、判斷下拉框裏選擇了哪個選項

java 代碼
  1. assertEquals(selenium.getSelectedIndex("xpath=//SELECT[@name='HATIMING']"), "1");  

這個可以用來判斷下拉框顯示的選項是否是期望的選項。

7、如果有 alert 彈出對話框怎麼辦?

這個問題弄了挺長時間,可以這樣來關閉彈出的對跨框:

java 代碼
  1. if(selenium.isAlertPresent()) {   
  2.   
  3.    selenium.getAlert();   
  4.   
  5. }  

其實當調用 selenium.getAlert() 時,就會關閉 alert 彈出的對話框。
也可以使用 System.out.println(selenium.getAlert()) 來查看對跨框顯示的信息。

在測試的時候,有的人會顯示許多alert 來查看運行時的數據,那麼我們可以用下面的方式來關閉那些 alert:

java 代碼
  1. while(selenium.isAlertPresent()) {       
  2.       
  3.    selenium.getAlert();       
  4.       
  5. }   

8、如何測試一些錯誤消息的顯示?

java 代碼
  1. assertTrue(selenium.getBodyText().indexOf("錯誤消息")>=0);  

切記: getBodyText 返回的時瀏覽器頁面上的文字,不回包含html 代碼的,如果要顯示html 代碼,用下面這個:

java 代碼
  1. System.out.println(selenium.getHtmlSource());  

以上就是最常用的幾個方法了,例如 click, type, getValue 等等。
還有就是一定要學習 xpath, 其實xpath 也可以有“與、或、非”的操作:

java 代碼
  1. selenium.check("xpath=//input[(@name='KNYKBN')and(@value='Y')]");  

四、其他

selenium 還有更多的用法,例如彈出頁面等等。當面對沒見過的測試要求時,我最笨的方法就是按照api文檔一個一個找,
好在不多,肯定能找到。

 
發佈了67 篇原創文章 · 獲贊 1 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章