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

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

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

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

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

  Selenium IDE安裝完畢之后,可以從工具菜單中激活,然后我們可以在firefox中訪問需要測試的網(wǎng)頁,進行各種頁面操作,Selenium IDE在這個過程中會記錄我們的頁面控件和動作。完成錄制之后,Selenium IDE生成一個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>

  我們可以導出成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");
            }
    }

  只要導入相應的selenium和Junit包可運行。

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

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

  對于Selenium IDE,還有很多細節(jié)需要學習,比如正則表達式的應用,如何寫出通用的識別方法,等等。我準備使用Selenium IDE錄制腳本,然后導出成java文件,做一些修改之后用Selenium RC驅(qū)動。

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