我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          Selenium 使用介紹

          Selenium 是 thoughtworks公司的一個(gè)集成測試的強(qiáng)大工具。最近參與了一個(gè)系統(tǒng)移植的項(xiàng)目,正好用到這個(gè)工具,

          把一些使用心得分享給大家,希望大家能多多使用這樣的強(qiáng)大的,免費(fèi)的工具,來保證我們的質(zhì)量。

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

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

          好,下面進(jìn)入正題!

          一、Selenium 的版本

          Selenium 現(xiàn)在存在2個(gè)版本,一個(gè)叫 selenium-core, 一個(gè)叫selenium-rc 。

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

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

          selenium-rc 支持的語言非常多,這里我們著重關(guān)注java的方式。這里講的也主要是 selenium-rc,因?yàn)閭€(gè)人還是喜歡這種
          方式 :-)

           二、一些準(zhǔn)備工作

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

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

          3、安裝 jdk1.5

           三、selenium-rc 一些使用方法

          在 selenium-remote-control-0.9.0\server 目錄里,我們運(yùn)行 java -jar selenium-server.jar
          之后你就會看到一些啟動信息。要使用 selenium-rc ,啟動這個(gè)server 是必須的。

          當(dāng)然,啟動的時(shí)候有許多參數(shù),這些用法可以在網(wǎng)站里看看教程,不過不加參數(shù)也已經(jīng)足夠了。

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

          我們先有個(gè)概念,selenium 是模仿瀏覽器的行為的,當(dāng)你運(yùn)行測試類的時(shí)候,你就會發(fā)現(xiàn)selenium 會打開一個(gè)

          瀏覽器,然后瀏覽器執(zhí)行你的操作。

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

          java 代碼

           

          public class TestPage2 extends TestCase {    
            
          private Selenium selenium;    
             
            
          protected void setUp() throws Exception {    
               String url 
          = “http://xxx.xxx.xxx.xxx/yyy”;    
               selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort    
                                          (), 
          "*iexplore", url);    
               selenium.start();    
                          
               
          super.setUp();                         
                      
            }
              
             
            
          protected void tearDown() throws Exception {    
                      
                selenium.stop();    
                
          super.tearDown();    
                          
             
            }
              
             
          }
             

           

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

          下面我就要講講怎么使用selenium 這個(gè)對象來進(jìn)行測試。

          1、測試文本輸入框

          假設(shè)頁面上有一個(gè)文本輸入框,我們要測試的內(nèi)容是 在其中輸入一些內(nèi)容,然后點(diǎn)擊一個(gè)按鈕,看看頁面的是否跳轉(zhuǎn)
          到需要的頁面。

          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");    
          }
             


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

          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 方法來確定選擇下拉框中的哪個(gè)選項(xiàng)。
          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 方法來確定選擇哪個(gè)radio button

          4、得到文本框里的文字

          java 代碼

              

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

           

          getValue 方法就是得到文本框里的數(shù)值,可不是 getText 方法,用錯了可就郁悶了。

          5、判斷頁面是否存在一個(gè)元素

          java 代碼

              

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

           

          一般這個(gè)是用來測試當(dāng)刪除一些數(shù)據(jù)后,頁面上有些東西就不會顯示的情況。

          6、判斷下拉框里選擇了哪個(gè)選項(xiàng)

          java 代碼

              

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

           

          這個(gè)可以用來判斷下拉框顯示的選項(xiàng)是否是期望的選項(xiàng)。

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

          這個(gè)問題弄了挺長時(shí)間,可以這樣來關(guān)閉彈出的對跨框:

          java 代碼
          if(selenium.isAlertPresent()) {    
             
             selenium.getAlert();    
             
          }
             

          其實(shí)當(dāng)調(diào)用 selenium.getAlert() 時(shí),就會關(guān)閉 alert 彈出的對話框。
          也可以使用 System.out.println(selenium.getAlert()) 來查看對跨框顯示的信息。

          在測試的時(shí)候,有的人會顯示許多alert 來查看運(yùn)行時(shí)的數(shù)據(jù),那么我們可以用下面的方式來關(guān)閉那些 alert:

          java 代碼
          while(selenium.isAlertPresent()) {        
                 
             selenium.getAlert();        
                 
          }
              

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

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

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

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

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

          java 代碼

          四、其他

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

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


          posted on 2007-11-24 10:03 々上善若水々 閱讀(2394) 評論(0)  編輯  收藏 所屬分類: 軟件測試

          主站蜘蛛池模板: 江山市| 神木县| 从江县| 紫云| 翁牛特旗| 商都县| 海丰县| 司法| 滕州市| 晋州市| 江山市| 乌兰浩特市| 古田县| 玉山县| 宁津县| 南昌县| 仙游县| 伊金霍洛旗| 清远市| 驻马店市| 孟州市| 顺昌县| 囊谦县| 美姑县| 庄河市| 塔城市| 义乌市| 镇安县| 龙井市| 克拉玛依市| 普洱| 安吉县| 纳雍县| 中西区| 虹口区| 临沭县| 隆昌县| 海南省| 旬阳县| 达孜县| 碌曲县|