清單 1. Selenium 測試用例的結構 (HTML格式)
Command1/Assertion1 | Target1 | Value1 |
Command2 Assertion1 | Target2 | Value2 |
test runner 腳本使用與 xUnit 框架相同的測試套件(test suite)和測試用例概念。測試用例和命令按照它們在測試套件和測試用例中出現的順序依次執行。在 清單 1 中:
* 第一列包含命令 或斷言。
* 第二列包含命令或斷言的目標(target)??梢杂枚喾N受支持的組件定位符中的一種來指定目標。通常使用的是組件的 ID 或名稱,但 XPath 和 DOM 定位符也是受支持的。
* 第三列包含用于為命令或斷言指定參數的值。例如,當使用 type 命令時,這一列可能就是一個文本域所期望的值。
Test runner 腳本通常與所測試的應用程序(AUT)部署在同一個服務器上。這是因為 browser bot 使用 JavaScript 來模擬用戶操作。這些腳本在一個受限制的沙箱環境中運行。如果需要繞過這些限制,可以使用一個代理。
driven 腳本開發模式
driven Selenium 腳本是用多種受支持的編程語言(Java, .NET, Perl, Python 和 Ruby)中的一種編寫的。這些腳本在瀏覽器之外的一個單獨的進程中運行。驅動程序的任務是執行測試腳本,并通過與運行在瀏覽器中的 browser bot 進行通信來驅動瀏覽器。驅動程序與 browser bot 之間的通信使用一種簡單的特定于 Selenium 的連接語言 Selenese。
driven 腳本比 test runner 腳本更強大、更靈活,可以將它們與 xUnit 框架集成。driven 腳本編寫和部署更復雜些,它必須執行以下任務:
* 啟動服務器。
* 部署所測試的應用程序(AUT)。
* 部署測試腳本。
* 啟動瀏覽器。
* 發送命令到 browser bot。
* 驗證 browser bot 執行的命令的結果。
driven 腳本更依賴于應用程序運行時環境。例如,Java 驅動程序使用一個嵌入式 Jetty 或 Tomcat 實例來部署所測試的應用程序,如將 Selenium 集成到 Ruby on Rails 中。
開發測試用例
測試用例開發涉及四類文件
<!--[if !supportLists]-->1. <!--[endif]-->主文件: TestRunner.html/TestRunner.hta(.hta文件是html application,windows平臺特有);
<!--[if !supportLists]-->2. <!--[endif]-->Test suite和Test case文件:需要編寫的由一個表格組成的html文件;
<!--[if !supportLists]-->3. <!--[endif]-->引擎庫js文件:位于selenium根目錄下的核心文件,其中html-xpath目錄下的那個文件,也是必須的庫文件;
<!--[if !supportLists]-->4. <!--[endif]-->user-extensions.js:用來擴展selenium的文件;用戶自己編寫的函數和擴展的命令都應該放在這個文件中;
這四類文件中,除了引擎庫以外,其他三類文件都是可以根據具體情況去修改的。selenium 部署完畢后,可以打開瀏覽器來通過url來訪問TestRunner.html文件。初始的時候,TestRunner.html文件中的 TestSuite是鏈接到tests目錄下的TestSuite.html文件,TestCase的frame(上部中間)中打開了 TestSuite.html文件中的第一個Test Case “TestOpen.html”。
可以直接修改TestSuite.html文件,讓其指向自己開發的Test case html文件。我們也可以建立另外一個目錄,然后將自己的TestSuite文件和Test case文件都保存在這個目錄中。如果使用后一種方式,那么在打開TestRunner.html的時候需要傳遞一個參數,例子如下:
http://localhost/selenium/TestRunner.html?test=/testDir/myTestSuite.html
下面就是開發測試用例——即編輯測試用例的表格。無論Test Suite還是Test Case,表格的第一行都是描述性文字,selenium的引擎是不會處理這一行的內容的。實際內容都是從第二行開始的。Test case的表格列數一定不能少于3列,否則Selenium會出錯。而基本的三列組成是:
|command| Target| value| ?
清單 2就是四個測試用例的例子,將執行以下操作:
1. 通過進入 /change_address_form.html 打開變更地址頁面。
2. 在 ID 為 address_field 的文本框中輸入 Betelgeuse state prison。
3. 單擊名為 Submit 的輸入區。注意,這里使用 XPath 找到 Submit 按鈕,這導致表單數據被發送到服務器。
原文轉自:http://www.uml.org.cn/Test/200607285.htm