Selenium 命令
通過 Selenium 命令,腳本編寫者可以描述 browser bot 在瀏覽器中所執行的操作??梢詫⑦@些命令分成兩類 —— 操作(action) 和斷言(assertion):
操作模擬用戶與 Web 應用程序的交互。例如,單擊一個按鈕和填寫一個表單,這些都是常見的用戶操作,可以用 Selenium 命令來自動化這些操作。斷言驗證一個命令的預期結果。常見的斷言包括驗證頁面內容或當前位置是否正確。在 Selenium 網站上可以找到可用命令的完整列表(見 參考資料)。
Selenium 模式
可以按兩種模式來使用 Selenium:test runner 和 driven。這兩種模式在復雜性和編寫方式方面有所不同。driven 測試腳本編寫起來往往要更復雜一些,因為它們是用編程語言編寫的。但是如果使用 Python 或 Ruby 之類的高級動態編程語言,那么這種復雜性方面的差異就很小。
兩種模式之間最大的不同點在于,如果使用 driven 腳本,測試有一部分在瀏覽器之外運行,而如果使用 test runner 腳本的話,測試是完全在瀏覽器中運行的。
不管是 test runner 還是 driven 測試用例,都可以與持續集成工具集成。
test runner 模式
Selenium test runner 腳本,也稱測試用例(test case),是用 HTML 語言通過一個簡單的表布局編寫的,如 清單 1 所示。
清單 1. Selenium 測試用例的結構
<table border="1">
<tr>
<td>First command</td>
<td>Target</td>
<td>Value</td>
</tr>
<tr>
<td>Second command</td>
<td>Target</td>
<td>Value</td>
</tr>
</table>
test runner 腳本通常與所測試的應用程序(AUT)部署在同一個服務器上。這是因為 browser bot 使用 JavaScript 來模擬用戶操作。這些腳本在一個受限制的沙箱環境中運行。如果需要繞過這些限制,可以使用一個代理。
test runner 腳本使用與 xUnit 框架相同的測試套件(test suite)和測試用例概念。測試用例和命令按照它們在測試套件和測試用例中出現的順序依次執行。在 清單 1 中:
第一列包含命令 或斷言。
第二列包含命令或斷言的目標(target)。這里可以用多種受支持的組件定位符中的一種來指定目標。通常使用的是組件的 ID 或名稱,但XPath 和 DOM 定位符也是受支持的。
第三列包含用于為命令或斷言指定參數的值。例如,當使用 type 命令時,這一列可能就是一個文本域所期望的值。
即使對于非技術人員來說,test runner 腳本也易于閱讀和編寫。當在一個瀏覽器中打開 清單 1 中的例子時,將得到類似這樣的一個表:
First command | Target | Value |
Second command | Target | Value |
接下來,我將描述如何使用命令和斷言編寫一個簡單但是完整的測試用例。
測試用例實例
執行 清單 2 中的測試腳本時,它將執行以下操作:
通過進入 /change_address_form.html 打開變更地址頁面。
在 ID 為 address_field 的文本框中輸入 Betelgeuse state prison。
單擊名為 Submit 的輸入區。注意,這里使用 XPath 找到 Submit 按鈕,這導致表單數據被發送到服務器。
驗證頁面是否包含文本 Address change suclearcase/" target="_blank" >ccessful。
清單 2. 在測試用例中使用命令和斷言的例子
<table>
<tr>
<td>open</td>
<td>/change_address_form.html</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>address_field</td>
<td>Betelgeuse state prison</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//input[@name='Submit']</td>
<td></td>
</tr>
<tr>
<td>verifyTextPresent</td>
<td>Address change successful</td>
<td></td>
</tr>
</table>
測試套件
要達到對應用程序的完全測試覆蓋,通常需要不止一個測試用例。這就是 Selenium 使用測試套件的原因。測試套件用于將具有類似功能的一些測試用例編成一組,以便讓它們按順序運行。
測試套件和測試用例一樣,都是用簡單的 HTML 表編寫的。Selenium 執行的缺省測試套件的名稱是 TestSuite.html。清單 3 展示了一個測試套件,該套件像通常的用戶一樣測試應用程序。注意,測試套件使用一個只包含一列的表,表中的每一行指向一個包含某個測試用例的文件。
清單 3. 測試套件示例
<table>
<tr>
<td>Test suite for the whole application</td>
</tr>
<tr>
<td><a href="test_main_page.html">Access main page</a></td>
</tr>
<tr>
<td><a href="test_login.html">Login to application</a></td>
</tr>
<tr>
<td><a href="test_address_change.html">Change address</a></td>
</tr>
<tr>
<td><a href="test_logout.html">Logout from application</a></td>
</tr>
</table>
原文轉自:http://www.anti-gravitydesign.com