Selenium 命令 - “Selenese”
Selenium命令,常被稱爲Selenese,是一套運行在你的測試中的命令。這些命令的一個序列是一個測試腳本。在此,我們將詳細解釋這些命令,並提供你許多選擇,你可以在使用Selenium測試你的應用程序中使用。
Selenium提供了一套豐富的命令集,爲了可以完全地,以你可以想象的任何方式測試你的Web應用程序。命令集常常被稱爲Selenese。這些命令在本質上創建了一種測試語言。
在Selenese,人們可以測試現存的UI元素,基於HML標記,可以測試指定的內容,測試中斷的鏈接,輸入域,選擇列表選項,提交窗體,以及在其他內容之間的表格數據。此外Selenium命令支持測試窗口的大小,鼠標的位置,警告,Ajax功能,彈出窗口,事件處理,以及許多其他的Web應用程序特徵。命令參考列出了所有可得到的命令。
一個命令就是告訴Selenium應作是麼。Selenium命令可以分成三類:動作(Action),存取器(Accessor)和斷言(Assertion)。
動作(Action)通常是操縱應用程序狀態的命令。它們完成類似“點擊鏈接”和“選擇選項”的工作。如果一個動作(Action)失敗,或者有一個錯誤,當前測試的執行將終止。
許多動作(Action)可以被調用帶有“AndWait”後綴,例如“clickAndWait”。這個後綴告訴Selenium該動作將引起瀏覽器做出一個對服務器的調用,Selenium將等待一個新的頁面被裝載。
存取器(Accessor)檢查應用程序的狀態,並存儲結果在變量中,諸如“storeTitle”。它們也被使用於自動生成斷言。
斷言(Assertion)類似於存取器,但它們驗證應用程序的狀態符合預期。示例包括“確信頁面的標題是X”和“驗證複選框被選中”。
所有的Selenium斷言(Assertion)可以以三個方式進行使用:”assert“,”verify”和“waitFor”。例如你可以”assertText“,”verifyText“和”waitForText“。當一個”assert“失敗時,測試被退出。當一個”verify“失敗時,測試將繼續執行,日誌這個失敗。這允許一個單一的”assert“來確保應用程序是在正確的頁面上,跟着是一堆”verify“斷言,進行窗體域值及標籤等等的測試。
”waitFor“命令等待某些條件成真(可能對Ajax應用程序的測試是有用的)。它們將立即成功,如果條件已經爲真。然而,它們將失敗和停止測試,如果條件沒有在目前的超時設置內成真(見後面的setTimeout動作)。
腳本語法
Selenium命令是簡單的,它們由命令和兩個參數組成,例如:
verifyText //div//a[2] Login參數並不總是需要的;這依賴於命令。在某些情況下,需要兩個參數,一個參數,或者根本就不帶參數。這裏是幾個示例:
goBackAndWaitverifyTextPresent Welcome to My Home Page
type id=phone (555) 666-7066
type id=address1 ${myVariableAddress}
命令參考爲每一個命令描述了參數的需求情況。
參數是多種多樣的,然而它們典型的是:
識別頁面中UI元素的定位器
驗證或斷言預期的頁面內容的文本模式
用於在一個輸入域鍵入文本或在一個選項列表選擇一個選項的文本模式或Selenium變量
定位器,文本模式,Selenium變量,以及命令本身在Selenium命令章節有相當詳細的描述。
從Selenium IDE運行的Selenium腳本以一個HTML文本文件的格式存儲在一個文件中。它是由帶有三列的一個HTML表格組成的。第一列標示Selenium命令,第二列是目標(Target),最後一列包含一個值(Value)。第二和第三列依賴於選擇的Selenium命令可能不需要值,但它們必須被呈現。每一個錶行代表一個新的Selenium命令。這是一個測試的示例,完成打開一個頁。斷言頁的標題,然後驗證頁面上的某些內容:
open | /download/ | |
assertTitle | Downloads | |
verifyText | Downloads |
在瀏覽器中繪製作一個表,看起來如下:
open /download/assertTitle Downloads
verifyText //h2 Downloads
Selenese的HTML語法可以用於編寫和運行測試,而無需編程語言的知識。只要具備基本的Selenese和Selenium IDE的知識,你就可以快速地創作和運行測試案例。
測試集
一個測試集是測試的集合。時常一個人會運行在一個測試集中的所有測試做一個連續的批作業。
當使用Selenium IDE時,測試集可以被定義使用一個單一的HTML文件。語法同樣是簡單的。一個HTML表格定義一個測試列表,每一行定義每一個測試的地文件系統路徑。一個示例就可以說明一切:
<html>
<head>
<title>Test Suite Function Tests - Priority 1</title>
</head>
<body>
<table>
<tr><td><b>Suite Of Tests</b></td></tr>
<tr><td><a href="./Login.html">Login</a></td></tr>
<tr><td><a href="./SearchValues.html">Test Searching for Values</a></td></tr>
<tr><td><a href="./SaveValues.html">Test Save</a></td></tr>
</table>
</body>
</html>
一個類似於這個的文件就可以允許從Selenium IDE一次運行所有的測試。一個接着一個。
測試集也可以使用Selenium RC來維護。這可以通過編程來達到,同樣可以以多種方式被完成。普通的單元測試可以被使用於維護一個測試集,如果一個人正在使用Selenium RC用Java。替代地名如果C#是選擇的語言,也可以使用Nunit。如果使用一個解釋性語言,像Python,使用Selenium RC可能需要在建立一個測試集時進行一些簡單的編程工作。因爲使用Selenium RC的全部理由就是可以充分利用編程的邏輯於你的測試,這通常不應該是一個問題。
常用的Selenium命令
總結一下我們的Selenium簡介,我們向你展示了幾個典型的Selenium命令。這些可能就是最常用的構造測試的命令。
open
使用URL打開一個頁面。
click/clickAndWait執行一個點擊操作,可選的等待一個新的頁面被裝載。
verifyTitle/assertTitle驗證一個預期的頁面標題。
verifyTextPresent驗證在頁面某個地方的預期文本。
verifyElementPresent驗證由HTML標記定義的預期UI元素在頁面上是否呈現。
verifyText驗證預期文本和它響應的HTML標記在頁面上呈現。
verifyTable驗證一個表的預期內容。
waitForPageToLoad暫停執行直到一個預期的新頁面被裝載。當clickAndWait被使用時將自動調用。
waitForElementPresent暫停執行執導一個預期的右HTML標記定義的元素出現在頁面上。
驗證頁面元素
驗證一個頁面上的UI元素可能是你的自動化測試最常用的功能。Selenese允許以多種方式檢測UI元素。理解這些不同的方法是重要的,因爲這寫方法定義了你的實際測試內容。
例如,你將測試...
一個元素在頁面的某個地方出現了麼?
特定的文本在頁面的某個地方出現了麼?
特定的文本是在頁面上的某個特定的位置麼?
例如,如果你正在測試一個文本標題,這文本和它的在頁面頂部的位置可能是與你的測試相關的。然而,如果你正在測試在一個主頁面上一個圖像的存在性,而且Web的設計者頻繁地改變這個特定的圖像文件,以及它在頁面上的位置,那麼你僅僅希望去測試一個圖像(非特定的圖像文件)在頁面的某個地方。
斷言或驗證?
在“sssert”和“verify”之間的選擇取決於失敗的管理和便利性。當檢查頁面上的第一個段落是否正確幾乎是不重要,即使你失敗了,但瀏覽器正在顯示一個正確的頁面的時候。如果你沒有在正確的頁面,你可能希望推出你的測試案例,以便立即調查原因和快速地修復問題。另一方面,你可能希望檢查一個頁面的許多屬性,而在首次失敗是不退出測試,因爲這將允許你查看在頁面上的所有失敗,並採取適當的行動。實際上一個“assert”將使測試失敗並退出當前的測試案例,然而“verify”將使測試失敗並繼續運行測試案例。
這個特徵的最佳使用方法是邏輯地分組你的測試命令,在每個分組的開始帶有一個“assert”命令,跟着一個或多個“verify”測試命令。示例如下:
Command Target Valueopen /download/
assertTitle Downloads
verifyText //h2 Downloads
assertTable 1.2.1 Selenium IDE
verifyTable 1.2.2 June 3, 2008
verifyTable 1.2.3 1.0 beta 2
上面的示例,首先打開一個頁,然後通過比較頁面的標題與預期的值“assert”正確的頁面被裝載。只要這個通過,後面的命令將運行並“verify”文本被呈現在預期的位置。測試案例然後“assert”第一個表的第二行的第一列包含預期的值,並且僅當這個通過了,再繼續“verify”那一行的剩餘的單元格。
verifyTextPresent
該命令用於驗證特定的文本存在頁面的某個地方。帶有一個單一的參數 - 需要驗證的文本模式。例如:
Command Target ValueverifyTextPresent Marketing Analysis
這將引發Selenium搜索,驗證,文本串“Marketing Analysis”出現在正在驗證的頁面的某個地方。使用verifyTextPresent ,當你僅僅對文本本身出現在頁面上感興趣時。不要使用它,當你需要測試文本出現在頁面的哪裏時。
使用這個命令,當你測試一個特定的UI元素必須出現,而不是它的內容時。這個驗證部檢查文本,僅只HTML標記。一個常見的使用檢查一個圖像的呈現。
Command Target ValueverifyElementPresent //div/p/img
這個命令驗證一個圖像,使用一個<img>HTML標記,緊跟在<div>和<p>標記的後面。第一個(也是唯一的一個)參數是定位器,告訴Selenese命令如何找到這個元素。定位器被解釋在下一節。
verifyElementPresent 可以被使用於在頁面中檢查任何HTML標記的存在性。你可以檢查鏈接,段落,層等等的存在性。這兒是幾個示例:
Command Target ValueverifyElementPresent //div/p
verifyElementPresent //div/a
verifyElementPresent id=Login
verifyElementPresent link=Go to Marketing Research
verifyElementPresent //a[2]
verifyElementPresent //head/title
這些示例演示了一個UI元素可以被測試的各種各樣的方式。再次說明,定位器被解釋在下一節。
verifyText
使用verifyText,當文本以及它的UI元素必須被測試時。verifyText必須使用一個定位器。如果你選擇XPath或DOM定位器,你可以驗證特定的文本出現在頁面上,相對於其他UI組件的特定的位置。
Command Target ValueverifyText //table/tr/td/div/p This is my text and it occurs right after the div inside the table.
© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.