您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
selenium學(xué)習(xí)筆記
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/6 16:26:14 ] 推薦標(biāo)簽:

  Selenium是一款開源的web自動(dòng)化測(cè)試工具,可以運(yùn)行于IE、Firefox等若干瀏覽器上,驅(qū)動(dòng)web頁面元素,如點(diǎn)擊按鈕、填寫表單等等,可以錄制用戶操作和通過Java、Python等語言來定制,可以說功能相當(dāng)強(qiáng)大。

  本來這個(gè)工具的初衷是用于web開發(fā)人員的單元測(cè)試或者兼容性測(cè)試等,但我發(fā)現(xiàn)它對(duì)于系統(tǒng)測(cè)試也很有用——比如自動(dòng)化錄制系統(tǒng)測(cè)試腳本。隨著web 2.0技術(shù)的不斷發(fā)展,富客戶端應(yīng)用層出不窮,這給系統(tǒng)測(cè)試帶來了很大問題——測(cè)試腳本隨著軟件build的不斷更新(web頁面的很多細(xì)節(jié)發(fā)生變化),無法用于新build的測(cè)試,這導(dǎo)致測(cè)試人員經(jīng)常重復(fù)性的手動(dòng)錄制腳本,再加上數(shù)據(jù)關(guān)聯(lián)等工作,耗時(shí)費(fèi)力。

  而Selenium則提供了一個(gè)很好的解決方案,它是通過識(shí)別web頁面元素來定位頁面控件,所以通過Selenium錄制一次測(cè)試腳本,以后每次需要錄制腳本時(shí),都使用Selenium驅(qū)動(dòng)第一次的腳本來重新錄制(像RPTLoad Runner都用跟蹤http請(qǐng)求和響應(yīng)),這樣的話,Selenium基本可以較好的識(shí)別修改以后的控件,而RPT等系統(tǒng)測(cè)試工具則可以得到正確的http內(nèi)容,這個(gè)過程不再需要測(cè)試人員手動(dòng)錄制,完全靠Selenium自動(dòng)驅(qū)動(dòng)。

  Selenium包括很多組件,其中我現(xiàn)在用的是Selenium RC和Selenium IDE。Selenium IDE是Firefox的一個(gè)插件,我們可以使用它錄制頁面操作。

  Selenium IDE安裝完畢之后,可以從工具菜單中激活,然后我們可以在firefox中訪問需要測(cè)試的網(wǎng)頁,進(jìn)行各種頁面操作,Selenium IDE在這個(gè)過程中會(huì)記錄我們的頁面控件和動(dòng)作。完成錄制之后,Selenium IDE生成一個(gè)HTML文件保存腳本,比如

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head profile="http://selenium-ide.openqa.org/profiles/test-case">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="selenium.base" href="http://www.baidu.com/" />
    <title>baidu</title>
    </head>
    <body>
    <table cellpadding="1" cellspacing="1" border="1">
    <thead>
    <tr><td rowspan="1" colspan="3">baidu</td></tr>
    </thead><tbody>
    <tr>
            <td>open</td>
            <td>/</td>
            <td></td>
    </tr>
    <tr>
            <td>type</td>
            <td>kw</td>
            <td>ckword</td>
    </tr>
    <tr>
            <td>clickAndWait</td>
            <td>sb</td>
            <td></td>
    </tr>
    </tbody></table>
    </body>
    </html>

  我們可以導(dǎo)出成Java文件,比如:

    package com.example.tests;

    import com.thoughtworks.selenium.*;
    import java.util.regex.Pattern;

    public class NewTest extends SeleneseTestCase {
            public void setUp() throws Exception {
                    setUp("http://www.baidu.com/", "*chrome");
            }
            public void testNew() throws Exception {
                    selenium.open("/");
                    selenium.type("kw", "ckword");
                    selenium.click("sb");
                    selenium.waitForPageToLoad("30000");
            }
    }

  只要導(dǎo)入相應(yīng)的selenium和Junit包可運(yùn)行。

  有一點(diǎn)需要注意的是在回放腳本時(shí),應(yīng)該添加setSpeed方法,參數(shù)是ms,因?yàn)镾elenium IDE雖然可以選擇回放速度(慢——中——快),但實(shí)際上即使選擇慢速,Selenium IDE仍然運(yùn)行的有些快,導(dǎo)致其在順序執(zhí)行用戶操作時(shí),可以發(fā)生沒等到頁面加載完畢執(zhí)行下一個(gè)命令的現(xiàn)象,導(dǎo)致下一個(gè)命令找不到響應(yīng)的頁面控件。除了setSpeed之外,Selenium IDE還可以添加大量的命令。具體見Selenium IDE界面。

  另外一個(gè)關(guān)鍵是如何識(shí)別頁面控件。自動(dòng)化的核心是錄制的控件識(shí)別方法可以復(fù)用,Selenium IDE支持的識(shí)別格式包括ID、Name、XPath:attributes、DOM index和XPath : position,而且允許正則表達(dá)式,所以非常靈活,根據(jù)我使用的情況來看,對(duì)于富客戶端應(yīng)用,控件ID通常都增加了一個(gè)隨機(jī)數(shù),不適合做識(shí)別,Name還不錯(cuò),但是如何這個(gè)控件Name帶有版本信息,比如控件在不斷升級(jí),從1.3升到1.4,那么Name可以會(huì)失效,要小心。XPath: position我用的多,也覺得定位準(zhǔn)。但是Selenium IDE有時(shí)抓不到某些操作,比如,可以某一個(gè)Logout鏈接,是由span來實(shí)現(xiàn)的,此時(shí)Selenium IDE抓不到,此時(shí)可以XPath:attributes識(shí)別,這樣寫://span[text()='Log out'],搞定。

  對(duì)于Selenium IDE,還有很多細(xì)節(jié)需要學(xué)習(xí),比如正則表達(dá)式的應(yīng)用,如何寫出通用的識(shí)別方法,等等。我準(zhǔn)備使用Selenium IDE錄制腳本,然后導(dǎo)出成java文件,做一些修改之后用Selenium RC驅(qū)動(dòng)。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd