Selenium IDE

簡介

Selenium IDE(集成開發環境)是用於開發的Selenium測試用例的工具。這是一個易於使用Firefox插件且一般開發測試狀況下,最有效的方式。它還包含一個上下文菜單,容許你先從瀏覽器當前顯示的頁面中選擇一個UI元素,而後從Selenium列表中選擇帶有參數的命令,根據所選擇的UI元素的狀況下預先定義的。這不只節省時間,並且能學到Selenium腳本語法的一個很好的方式。javascript

這一章是關於SeleniumIDE,以及如何有效地使用它。css

安裝

使用Firefox,首先,從SeleniumHQ下載IDE 下載頁面html

Firefox會保護你安裝來自不熟悉的位置的插件,因此你須要點擊「容許」繼續安裝,以下面的屏幕截圖。java

從Firefox下載時,你將會看到以下窗口。node


選擇當即安裝。在Firefox附加組件窗口彈出,先顯示一個進度條,當下載完成後,顯示以下。css3


從新啓動Firefox。火狐重啓後你會發現SeleniumIDE Firefox的工具菜單下的上市。git

 

打開

要運行SeleniumIDE,只需從Firefox的工具菜單中選擇。它會打開一個空的腳本編輯窗口,並加載,或建立新的測試用例的菜單以下。web

IDE功能

 

工具欄

該工具欄包含的按鈕用於控制測試用例的執行,包括調試測試用例的一個步驟的功能。最右邊的按鈕,一個與紅點,是錄製按鈕。


速度控制:控制你的測試用例運行的速度有多快。
運行所有:運行整個測試套件時,一個測試套件與多個測試用例被加載。
運行:運行當前所選的測試。當只有一個單一的測試加載此按鈕,運行全部按鈕有一樣的效果。
 
暫停/恢復:容許中止和從新啓動運行試驗狀況。
步驟:讓你「一步到位」,經過測試狀況下,經過在同一時間運行這一個命令。用於調試測試案例。
TestRunner的模式:容許您運行測試用例在裝有Selenium核心TestRunner的瀏覽器。該TestRunner的不經常使用,如今使用,極可能被棄用。這個按鈕是用於評估測試用例向後與TestRunner的兼容性。大多數用戶可能不須要這個按鈕。
申請彙總規則:這種先進的功能使Selenium的重複序列命令被組合成一個單一的動做。詳細文檔在彙總規則能夠在幫助菜單上的UI-元素文檔中找到。
記錄:記錄用戶的瀏覽器操做。

測試用例面板

您的腳本將顯示在測試用例窗格。它有兩個選項卡,一個用於顯示命令和他們在一個可讀的「表」的格式參數。


其餘選項卡 - 源顯示測試案例中,該文件將被存放在本地格式。默認狀況下,這是HTML雖然它能夠改變一個編程語言如Java或C#或Python等腳本語言。詳情請參見選項菜單。來源視圖還容許一個編輯測試用例的原始形式,包括複製,剪切和粘貼操做。

該命令,目標和值輸入字段與它的參數以及顯示當前選擇的命令。這些輸入字段,您能夠修改當前選定的命令。在底部窗格中的參考選項卡的命令中指定的第一個參數老是轉到在目標領域。若是是經過參考選項卡中指定第​​二個參數,它老是過得值字段。


若是你開始輸入命令字段中,下拉列表將根據您輸入的第一個字符填充; 那麼你能夠從下拉菜單中選擇你想要的命令。

登陸/參考/ UI-元/彙總窗格

底部面板用於四種不一樣的功能,日誌,參考UI元素和彙總,具體取決於哪一個選項卡中選擇。

日誌

當你運行你的測試狀況下,錯誤信息和顯示進度信息的消息會自動顯示在此窗格中,即便你沒有首先選擇登陸選項卡。這些消息每每是測試用例調試。注意清除日誌清除按鈕。還會注意到信息按鈕是一個下拉容許選擇不一樣級別的信息來登陸的。

參考

引用標籤是當你正在輸入或修改默認選擇的Selenese表模式下的命令和參數。在表模式下,參考窗格將顯示當前命令的文檔。當輸入或修改命令,不管從表或源代碼模式,它是很是重要的,以確保在目標和值字段中指定的參數相匹配的那些在參考窗格中的參數列表中指定。的設置必須指定的數量,提供必須指定的順序匹配參數的順序匹配參數的數量,並提供必須匹配所指定的類型的參數的類型。若是有任何這三個方面的不匹配,該命令將沒法正常運行。


雖然參考標籤是很是寶貴的一個快速參考,但仍然常常須要查閱Selenium參考文件。

UI元可累積

詳細介紹了這兩個窗格(其中包括先進的功能)能夠SeleniumIDE的幫助菜單上的用戶界面 - 元素的文檔中找到。

建築測試用例

有三種主要方法用於開發測試案例。一般狀況下,測試開發人員所須要的全部三種技術。

錄音

不少初次使用的用戶開始經過記錄測試案例,從他們與網站的互動。當SeleniumIDE第一次打開,錄音鍵爲默認。若是你不但願SeleniumIDE開始自動記錄您能夠在選項>選項...去和取消關閉此功能「開始開放當即開始錄製。」

在錄製過程當中,根據你的行動SeleniumIDE會自動將命令插入你的測試用例。一般,這將包括:

  • 點擊一個連接- 點擊clickAndWait命令
  • 輸入值- 類型命令
  • 從下拉列表框中選擇選項- 選擇命令
  • 點擊複選框或單選按鈕- 點擊命令

下面是一些「陷阱」要注意的:

  • 類型命令可能須要點擊網頁的某些其餘區域爲它來記錄。
  • 如下連接一般記錄了點擊命令。你會常常須要改變這clickAndWait,以確保您的測試案例將暫停,直到新的一頁載入中,。不然,你的測試用例將繼續運行命令以前在頁面加載全部的UI元素。這將致使意想不到的測試用例失敗。

添加考證並聲稱經過上下文菜單

你的測試用例還須要檢查網頁的屬性。這須要斷言驗證命令。咱們不會在這裏描述這些命令的具體狀況; 那是在上一章Selenium命令- 「Selenese的」。在這裏,咱們將簡單地介紹瞭如何將它們添加到您的測試用例。

隨着SeleniumIDE的記錄,到瀏覽器中顯示您的測試應用程序,請右鍵單擊頁面上的任何地方。你會看到一個上下文菜單,顯示驗證 和/或斷言命令。

當您第一次使用Selenium,有可能只有一個Selenium命令中列出。當你可是使用IDE,你會發現更多的命令很快被添加到該菜單。SeleniumIDE會嘗試預測命令與參數,則須要在當前網頁上選擇的用戶界面元素。

讓咱們來看看它是如何工做。打開你選擇的網頁,選擇頁面上的文本塊。一個段落或標題將正常工做。如今,用鼠標右鍵單擊選定的文本。上下文菜單應該給你一個verifyTextPresent 命令和建議的參數應該是文本自己。

此外,請注意顯示全部可用的命令的菜單選項。這說明不少不少的命令,再次,以及建議的參數,來測試你的當前選擇的UI元素。

多試幾個UI元素。嘗試右鍵單擊圖像,或者像一個按鈕或複選框用戶控制。您可能須要使用顯示全部可用的命令來查看選項比其它verifyTextPresent。一旦選擇這些其餘選擇,更經常使用的將顯示在主上下文菜單上。例如,選擇verifyElementPresent該命令會在您選擇圖像,而後用鼠標右鍵單擊下一次的主上下文菜單上的圖像後應當引發。

再次,這些命令將詳細在Selenium命令章節說明。不過如今,隨意使用IDE來記錄並選擇命令到一個測試用例,而後運行它。你能夠簡單地經過與IDE試驗學到了不少關於Selenium的命令。

編輯

INSERT命令

表視圖

要插入命令,選擇測試用例的地步。要作到這一點,在測試用例窗格中,在要插入一個新的命令行左擊。右鍵單擊並選擇Insert命令; IDE將添加一個空行就在前面,你所選擇的路線。如今用命令編輯的文本字段輸入新的命令及其參數。

源視圖

要插入命令,選擇測試用例的地步。要作到這一點,在測試用例窗格中,要插入一個新的命令,命令之間左鍵單擊,若是須要的話經過輸入建立包含命令,第一個參數(3列排所需的HTML標籤命令),和第二個參數(一樣,若是須要的話,以定位一個元素)和第三參數(一樣,若是須要的話,以有一個值)。示例:

<tr> 
    <td> Command </td> 
    <td> target (locator) </td> 
    <td> Value </td> 
</tr>

 

插入註釋

註釋能夠被添加到讓你的測試案例更具可讀性。測試用例運行時,這些意見被忽略。

註釋也能夠用來在測試中添加垂直空白(一個或多個空行); 只需建立空的註釋。空命令將致使執行過程當中的錯誤; 一個空的評論不會。

表視圖

要插入註釋選擇測試用例行。右鍵單擊並選擇插入註釋。如今使用命令字段中輸入註釋。您的評論將顯示爲紫色文本。

源視圖

要插入註釋選擇測試用例的地步。添加一個HTML風格的註釋,即<!-- your comment here -->

編輯命令或評論

表視圖

只需選擇要更改的行和使用命令,目標,和值字段編輯。

源視圖

因爲源視圖提供了一個所見即所得的等價(您看到的就是你獲得的)編輯器,只需修改哪一行,你想命令,參數或註釋。

打開和保存測試用例

最喜歡的節目,也有保存和打開命令在文件菜單下。然而,Selenium測試用例和測試套件進行了區分。爲了節省您的Selenium-IDE測試之後使用您能夠保存單個的測試案例,或保存測試套件。若是您的測試套件的測試案例還沒有保存,系統會提示您保存它們保存測試套件以前。

當您打開現有的測試用例或套房,Selenium,IDE會在測試用例窗格中的Selenium命令。

運行測試用例

IDE將有多個選項來運行你的測試用例。您能夠運行測試用例一會兒,中止和啓動它,運行它的一行時,運行當前正在開發一個單一的命令,你能夠作一個完整的測試套件的批處理。測試用例的執行是很是靈活的IDE。

運行測試用例
點擊運行按鈕運行當前顯示的測試用例。
運行測試套件
點擊運行全部按鈕運行當前加載的測試套件中的全部測試用例。
中止和啓動
暫停按鈕能夠用來在運行中止測試用例。這個按鈕的圖標,而後改變來代表繼續按鈕。要繼續點擊繼續。
中途中止
您能夠在測試狀況下,斷點,使得它停在一個特定的命令。這對於調試測試用例是有用的。要設置斷點,選擇一個命令,單擊鼠標右鍵,而後從上下文菜單中選擇切換斷點。
從中間開始
你能夠告訴IDE從一個特定的命令開始在測試用例中間運行。這也用於調試。要設置起始點,選擇一個命令,單擊鼠標右鍵,而後從上下文菜單中選擇設置/清除起點。
運行任何單個命令
雙擊任何一個命令自己來運行它。寫一個命令時,這是很是有用的。它可讓你當即測試,你正在建設一個命令,當你不知道這是不是正確的。你能夠雙擊它,看它是否正常運行。這也能夠從上下文菜單中。

使用基本URL運行在不一樣的域測試用例

基本URL在SeleniumIDE窗口的頂場是用於容許測試用例被跨越不一樣域中運行很是有用的。假設一個名爲http://news.portal.com網站有一個名爲http://beta.news.portal.com一個內部測試站點。任何測試用例這些網站,開始一個開放式 的語句應該指定一個相對URL做爲參數來打開 ,而不是絕對 URL(一個開始的協議如http:或https :)。而後SeleniumIDE將經過附加建立一個絕對URL 打開命令的參數上基本URL的值的末尾。例如,在下面的測試例將針對http://news.portal.com/about.html運行:


一樣的測試案例與修改後的基本URL設置將針對http://beta.news.portal.com/about.html運行:

Selenium命令- 「Selenese"

Selenium命令,一般被稱爲Selenese,是一套運行測試命令。這些命令的序列是一個測試腳本。下面咱們詳細解釋這些命令,咱們爲您介紹有衆多的選擇中使用Selenium測試時,你的Web應用程序。

Selenium提供了一套豐富的命令進行全面測試在幾乎任何你能想象你的web應用程序。該命令集一般被稱爲 Selenese的。這些命令實質上是建立了測試語言。

在Selenese的,能夠測試基於其HTML標籤的UI元素的存在,測試具體內容,測試斷開的連接,輸入框,選擇列表選項,提交表單,和表數據等等。此外Selenium命令窗口大小,鼠標的位置,提醒,Ajax功能的支持測試,彈出窗口,事件處理等諸多網絡應用功能。該命令參考列出了全部可用的命令。

一個命令告訴Selenium怎麼作。Selenium命令有三種「口味」:操做存取,和斷言

  • 操做是命令的通常操做應用程序的狀態。他們作的事情,如「點擊這個連接」和「選擇該選項」。若是操做失敗,或出現錯誤,當前測試的執行中止。

    許多動做能夠被稱爲與「AndWait」後綴,例如「clickAndWait」。這個後綴告訴Selenium,該動做將致使瀏覽器打電話到服務器,並且Selenium應等待一個新的頁面加載。

  • 存取檢查應用程序的狀態和結果存儲在變量,如「storeTitle」。它們還用於自動生成斷言。

  • 斷言像存取,但他們驗證應用程序的狀態符合的指望是什麼。例子包括「確保頁面標題爲X」和「驗證該複選框被選中。」

    全部Selenium斷言能夠在3種模式中使用:「斷言」,「驗證」和「WAITFOR」。例如,你能夠在「assertText」,「verifyText」和「waitForText」。當一個「斷言」失敗,則測試將被停止。當一個「驗證」失敗,則測試將繼續執行,記錄失敗。這容許一個單一的「斷言」,以確保應用程序是正確的頁面上,接着是一串「驗證」斷言測試表單字段值,標籤​​等。

    「WAITFOR」命令等待一些條件要成爲真正的(可用於測試Ajax應用程序很是有用)。他們將當即得到成功,若是條件已經成爲事實。不過,他們將失敗,並中止測試,若是條件不成爲當前超時設置在真正的(參見下面的setTimeout的動做)。

腳本語法

Selenium的命令很簡單,它們由命令和兩個參數。例如:

example:

verifyText //div//a[2] Login

參數並不老是必需的; 這取決於該命令。在某些狀況下,二者都須要,在其餘一個參數是必需的,而在還有一些命令能夠不帶參數的。這裏有幾個例子:

goBackAndWait    
verifyTextPresent   Welcome to My Home Page
type id=phone (555) 666-7066
type id=address1 ${myVariableAddress}

The command reference describes the parameter requirements for each command.

 


參數而變化,但它們一般:
命令參考描述了每一個命令的參數要求。

  • 一個定位器,用於識別一個頁內的UI元素。
  • 一個文本模式進行驗證或斷言預期的頁面內容
  • 一個文本模式,或在輸入字段中輸入文本或選擇從一個選項列表中的選項Selenium變量。

定位器,文本模式,Selenium變量,和自己至關詳細的Selenium的命令的部分中描述的命令。

將從Selenium-IDE中運行Selenium腳本將被存儲在一個HTML文本文件格式。這包括三列的HTML表格。第一列標識Selenium命令,第二個是一個目標,而且最後一列包含一個值。取決於所選擇的Selenium命令的第二和第三列能夠不要求值,但它們應存在。每一個表格行表明一個新的Selenium命令。這裏是打開一個網頁,斷言頁面標題,而後再覈實頁上的某些內容的試驗的一個例子:

<table> 
    <tr><td> open </td><td> /download/ </td><td></td></tr> 
    <tr><td> assertTitle </td><td>< /td><td> Downloads </td></tr> 
    <tr><td> verifyText </td><td> //h2 </td><td> Downloads </td></tr> 
</ table>

 

呈現爲在瀏覽器中,這將看起來像下面的表格:

open /download/  
assertTitle   Downloads
verifyText //h2 Downloads

Selenese的HTML語法能夠用來編寫和無需編程語言的知識進行測試。隨着Selenese的和SeleniumIDE的基礎知識,你能夠快速產生和運行測試用例


測試套件

測試套件是測試的集合。每每是將運行在一個測試套件做爲一個連續的批處理做業中的全部測試。

當使用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>

 

相似這樣的文件將容許運行測試所有一次,一個接着一個,從SeleniumIDE。

測試套件也可使用Selenium-RC時保持。這是經過編程完成,能夠作許多方法。經常使用JUnit是用於維護測試套件若是已使用Selenium-RC使用Java。此外,若是C#是所選擇的語言,NUnit的能夠採用。若是使用的是解釋型語言如Python使用Selenium-RC而後一些簡單的編程將參與創建一個測試套件。因爲整個之因此使用Selenium-RC是利用編程邏輯爲您的測試這一般是不成問題的。

經常使用Selenium命令

要總結咱們的介紹Selenium,咱們將向您展現一些典型的Selenium命令。這些多是建築試驗中最經常使用的命令。

開放
打開使用URL的網頁。
點擊/ clickAndWait
執行的點擊操做,而且任選等待一個新的頁面加載。
verifyTitle / assertTitle
驗證預期的頁面標題。
verifyTextPresent
驗證預期的文本在頁面上的某個地方。
verifyElementPresent
驗證預期的UI元素,經過它的HTML標籤所定義,存在於頁面上。
verifyText
驗證預期的文本和相應的HTML標記存在於頁面上。
verifyTable
驗證表的預期內容。
waitForPageToLoad
暫停執行,直到預期的新頁面加載。當clickAndWait使用自動調用。
waitForElementPresent
暫停執行,直到指望的UI元素,經過它的HTML標籤所定義,存在於頁面上。

驗證頁面元素

網頁上驗證UI元素多是自動化測試的最多見的特徵。Selenese的容許檢查UI元素的多種方式。您須要瞭解這些不一樣的方法,由於這些方法定義什麼你實際測試是很是重要的。

例如,您將測試...

  1. 一個元素出如今某個頁面上?
  2. 具體的文字是什麼地方在網頁上?
  3. 特定的文本是在頁面上的特定位置?

例如,若是你測試文本標題,文本及其在頁面的頂部位置多是相關的測試。可是,若是你正在測試的主頁上的圖像的存在,和網頁設計師常常一塊兒在頁面上的位置來改變特定的圖像文件,那麼你只須要測試圖像(相對於特定的圖像文件)存在某個頁面上的

斷言或驗證

「斷言」和「驗證」之間的選擇歸結爲方便故障和管理。有不多一點檢查檢查瀏覽器顯示預期的頁面時,頁面上的第一段是正確的,若是你的測試已經失敗。若是你不正確的頁面上,你可能會想終止你的測試狀況,以即可以查明緣由並及時解決問題(S)。在另外一方面,你可能要檢查一個頁面的許多屬性沒有放棄在第一次失敗的測試案例,由於這將容許您查看頁面上的全部故障,並採起相應的措施。有效的「斷言」將失敗的測試,並停止當前的測試案例,而「驗證」將失敗的考驗,繼續運行測試用例。

此功能的最佳用途是進行邏輯分組測試命令,並開始各組的「斷言」後面跟着一個或多個「驗證」測試命令。示例以下:

Command Target Value
open /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


verifyTextPresent¶
在上面的例子中第一次打開一個網頁,而後在「斷言」正確的頁由標題與預期值進行比較加載。只有這樣經過將下面的命令運行和「驗證」的文本存在於預期的位置。測試用例而後「斷言」的第一個表的第二行第一列中包含預期值,而且僅當這個傳遞將剩餘的細胞在該行中獲得「確認」。

該命令verifyTextPresent用於驗證某個特定的文本存在於網頁上。它採用一個參數,該文本被驗證模式。例如:

Command Target Value
verifyTextPresent Marketing Analysis  


這將致使Selenium搜索,並驗證,該文本字符串「市場分析」的地方出現目前正在測試在頁面上。使用verifyTextPresent當你只關心自身存在的頁面上的文本。不要使用這個時候,你還須要測試在頁面上,其中的文字出現

verifyElementPresent¶

使用此命令時,必須測試特定的用戶界面元素的存在,而不是它的內容。這種驗證不檢查的文字,只有HTML標記。一個常見用途是檢查的圖像的存在。

Command Target Value
verifyElementPresent //div/p/img  


verifyElementPresent
能夠用來檢查頁面內的任何HTML標記的存在。您能夠檢查連接,段落,分部的<div>等的存在,下面是幾個例子。該命令驗證的圖像,經過一個<img> HTML標記的存在說明,出如今頁面上,而且它遵循一個<div>標籤和一個<p>標籤。第一個(也是惟一的)參數是一個定位爲告訴Selenese的命令如何找到的元素。定位器將在下一節。

Command Target Value
verifyElementPresent //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必須使用一個定位器。若是選擇的XPathDOM 定位器,您能夠驗證特定文本出如今頁面上的相對於其餘UI組件頁面上的特定位置。

Command Target Value
verifyText //table/tr/td/div/p This is my text and it occurs right after the div inside the table.

定位元素

對於許多Selenium命令,目標是必需的。這一目標肯定在Web應用程序的內容的元素,包括定位策略以後格式的位置locatorType =位置。定位器類型能夠在許多狀況下被省略。各類定位器類型與實施例爲每一個進行說明。

經過標識定位

這多是定位元素的最經常使用的方法,而且是一應俱全的默認當沒有識別定位符類型被使用。這種策略,使用id屬性值相匹配的位置的第一個元素將被使用。若是沒有元件具備匹配id屬性,而後用姓名屬性相匹配的位置的第一個元素將被使用。

例如,你的頁面的源代碼可能有id和name屬性以下:

 
<html> 
 <body> 
  <form  id= "loginForm" > 
   <input  name= "username"  type= "text"  /> 
   <input  name= "password"  type= "password"  /> 
   <input  name= "continue"  type = "submit"  value= "Login"  /> 
  </form> 
 </body> 
<html>

 

上面的行號表示下面的定位策略將返回來自HTML片斷中的元素:

  • 標識符= LoginForm的(3)
  • 標識符=口令(5)
  • 標識符=繼續(6)
  • 繼續(6)

因爲標識符類型的定位器是默認的,所述標識符= 在第三個實施例以上是沒有必要的。

憑身份證定位

這種類型的定位是比標識定位器型較爲有限,同時也更加明確。當你知道一個元素的id屬性使用此。

 
  • <html> 
      <body> 
       <form  id= "loginForm" > 
        <input  name= "username"  type= "text"  /> 
        <input  name= "password"  type= "password"  /> 
        <input  name= "continue"  type = "submit"  value= "Login"  /> 
        <input  name= "continue"  type= "button"  value= "Clear"  /> 
       </form> 
      </body> 
     <html>

     

    • id=loginForm (3)

按姓名查找

該名稱定位器類型將會找到一個匹配的name屬性的第一個元素。若是多個元素有一個名字屬性的值相同,則可使用過濾器來進一步優化您的定位策略。默認的過濾器類型是值(匹配值的屬性)。

 
  • <html> 
      <body> 
       <form  id= "loginForm" > 
        <input  name= "username"  type= "text"  /> 
        <input  name= "password"  type= "password"  /> 
        <input  name= "continue"  type = "submit"  value= "Login"  /> 
        <input  name= "continue"  type= "button"  value= "Clear"  /> 
       </form> 
     </body> 
     <html>

     

    • name=username (4)
    • name=continue value=Clear (7)
    • name=continue Clear (7)
    • name=continue type=button (7)

注意

不像某些類型的XPath和DOM定位器,所述三種類型的定位器的上述​​容許Selenium,以測試它的獨立的頁上的位置的UI元素。因此,若是頁面結構和組織發生改變,測試仍然會經過。你可能會或可能不但願也測試是否頁面結構的變化。在狀況下,網頁設計師常常修改頁面,但它的功能必須經過ID是迴歸測試,測試和name屬性,仍是真的經過任何HTML屬性,就變得很是重要。

經過XPath的定位

XPath是用於定位節點的XML文檔中的語言。正如HTML能夠是XML(XHTML)的一個實現,Selenium用戶能夠利用這一強大的語言目標在其Web應用程序的元素。XPath的超出(以及配套)按id或name屬性定位的簡單方法,並開闢了各類新的可能性,如定位的第三個複選框在頁面上。

其中對使用XPath的主要緣由是當你沒有一個合適的ID或name屬性爲要查找的元素。您可使用XPath要麼找到絕對值的元素(不建議),或相對於確實有一個id或name屬性的元素。XPath定位也能夠用於指定經過屬性比ID和名稱等元素。

絕對的XPath含有從根(HTML)的全部元素的位置,其結果有可能會失敗,僅稍有調整到應用程序。經過查找附近的一個元素的ID或name屬性(理想的父元素),你能夠找到根據的關係,你的目標元素。這是不太可能改變,而且可能使你的測試更加健壯。

因爲只有xpath的定位器開始與「//」,這 ​​是沒有必要爲包括的xpath =指定一個XPath定位器時的標籤。

 
  • <html> 
      <body> 
       <form  id= "loginForm" > 
        <input  name= "username"  type= "text"  /> 
        <input  name= "password"  type= "password"  /> 
        <input  name= "continue"  type = "submit"  value= "Login"  /> 
        <input  name= "continue"  type= "button"  value= "Clear"  /> 
       </form> 
     </body> 
     <html>

     

    XPath的= / HTML /體/形式[1](3)- 絕對路徑(將打破,若是HTML只有輕微改變)
  • //形式[1](3)- 第一種形式的HTML元素
  • XPath的= //形式[@ ID ='登陸表單'](3)- 帶屬性的表單元素命名爲'身份證'和值'登陸表單「
  • XPath的= //形式[輸入/ @名='用戶名'](3)- 帶有屬性的輸入子元素命名爲「名稱」和值「用戶名」一表單元素
  • //輸入[@名稱='用戶名'](4)- 帶屬性的第一輸入元件名爲「名稱」和值「用戶名」
  • //形式[@ ID ='登陸表單'] /輸入[1](4)- 帶屬性的表單元素的名爲'身份證'和值'LoginForm的「第一次輸入的子元素
  • //輸入[@名稱='繼續'] [@類型='按鈕'](7)- 輸入與屬性命名爲「名」和值「繼續」和屬性名爲「類型」和值「按鈕」
  • //形式[@ ID ='登陸表單'] /輸入[4](7)- 帶屬性的表單元素命名爲「ID」和值「登陸表單」四輸入子元素

這些例子涉及到一些基礎知識,但爲了瞭解詳情,如下參考建議:

也有幾個很是有用的Firefox附加組件,可幫助發現元素的的XPath:

  • XPath的檢查 -代表XPath和可用於測試的XPath的結果。
  • 螢火蟲 - XPath的建議是對這個很是有用的附加 ​​的許多強大的功能只有一個。

經過DOM定位

文檔對象模型表明一個HTML文檔,可使用JavaScript訪問。這種定位策略採用JavaScript的計算結果頁面上的元素,它可使用分層點號只是元素的位置。

因爲只有dom的定位器開始與「文件」,這是沒有必要爲包括DOM =指定一個DOM定位器時的標籤。

 
  • <html> 
      <body> 
       <form  id= "loginForm" > 
        <input  name= "username"  type= "text"  /> 
        <input  name= "password"  type= "password"  /> 
        <input  name= "continue"  type = "submit"  value= "Login"  /> 
        <input  name= "continue"  type= "button"  value= "Clear"  /> 
       </form> 
     </body> 
     <html>

     

    • dom=document.getElementById('loginForm') (3)
    • dom=document.forms['loginForm'] (3)
    • dom=document.forms[0] (3)
    • document.forms[0].username (4)
    • document.forms[0].elements['username'] (4)
    • document.forms[0].elements[0] (4)
    • document.forms[0].elements[3] (7)

您可使用Selenium自己以及其餘網站和擴展,探討Web應用程序的DOM。一個很好的參考存在於W3Schools的

經過CSS定位

CSS(層疊樣式表)是用於描述HTML和XML文檔的呈現的語言。使用CSS選擇器樣式屬性綁定到文檔中的元素。這些選擇器可使用Selenium做爲另外一定位策略。

 
  •  <html> 
      <body> 
       <form  id= "loginForm" > 
        <input  class= "required"  name= "username"  type= "text"  /> 
        <input  class= "required passfield"  name= "password"  type= "password "  /> 
        <input  name= "continue"  type= "submit"  value= "Login"  /> 
        <input  name= "continue"  type= "button"  value= "Clear"  /> 
       </form> 
     </body> 
     < html>

     

    • css=form#loginForm (3)
    • css=input[name="username"] (4)
    • css=input.required[type="text"] (4)
    • css=input.passfield (5)
    • css=#loginForm input[type="button"] (7)
    • css=#loginForm input:nth-child(2) (5)

有關CSS選擇器的詳細信息,最想去的地方是W3C的出版物。你會發現更多的參考那裏。

注意

大多數有經驗的Selenium用戶推薦CSS做爲他們的首選定位策略,由於它是大大快於XPath和能夠找到的內在HTML文檔中最複雜的物體。

隱式定位器

您能夠選擇忽略定位器類型在如下幾種狀況:

  • 定位器沒有明肯定義定位策略將默認使用該標識符定位策略。見有標識符定位
  • 首先是定位符「//」將使用XPath的定位策略。見由XPath的定位
  • 以「文件」定位器將使用DOM定位策略。請參見經過DOM定位

匹配的文本模式

像定位器,圖案都是一個類型參數常常須要Selenese的命令。須要圖案的命令的例子是verifyTextPresent,verifyTitle,verifyAlert,assertConfirmation,verifyText,verifyPrompt。而且如已經如上所述,連接定位器可利用圖案。模式讓你描述,經過使用特殊字符,預計什麼文本,而沒必要徹底指定文本。

有三種類型的模式:通配符正則表達式,以及精確

匹配模式

大多數人都熟悉的通配符,由於它是用在文件名 ​​擴展的DOS或Unix / Linux命令行,如LS 的* .c。在這種狀況下,通配用於顯示全部與結尾的文件的.c 中存在當前目錄延伸。通配是至關有限的。只有兩個特殊字符中的Selenium實現支持:

*轉換爲「匹配任何」,即,什麼都沒有,單個字符,或者多個字符。

[](字符類)轉換爲「匹配在方括號中的任何單個字符」。破折號(連字符)能夠做爲一種簡寫來指定一個字符範圍(這是ASCII字符集毗連)的。舉幾個例子會使字符類明確的功能:

[AEIOU]匹配任意小寫的元音

[0-9]匹配任何數字

[A-ZA-Z0-9]匹配任何字母數字字符

在大多數其餘狀況下,通配包括第三特殊字符,則?。然而,Selenium匹配模式,只支持星號和字符類。

要指定的Selenese命令文件名 ​​匹配模式的參數,你能夠前綴模式有水珠:標籤。可是,因爲匹配模式是默認的,你也能夠省略標籤,僅指定模式自己。

下面是用匹配模式的兩個命令的一個例子。頁面上的實際的連接文本正在測試的「電影/電視系」; 經過使用模式,而不是確切的文本中,單擊若是連接文本更改成「影視廳」或「影視廳」的命令仍然工做。水珠圖案的星號將匹配單詞「電影」這個詞「電視」與「任何有或全無」。

Command Target Value
click link=glob:Film*Television Department  
verifyTitle glob:*Film*Television*  

經過單擊連接到達頁面的實際標題是「迪安薩電影和電視部門-菜單」。經過使用模式,而不是確切的文本,該verifyTitle會,只要這兩個詞「電影」和「電視」的出現(按順序)經過在頁面的標題的任何地方。例如,若是該頁面的全部者應縮短標題只是「影視廳」的測試將仍然經過。使用圖案爲一個連接和一個簡單的測試,該鏈路工做(如verifyTitle上述同樣)能夠大大下降維護這種測試用例。

正則表達式模式

正則表達式模式是最強大的三種類型的Selenese的支持模式。正則表達式是由最高級編程語言,不少文本編輯器,以及一系列的工具,包括在Linux / Unix命令行實用程序還支持grep,sed ,和AWK。在Selenese的,正則表達式模式容許用戶執行許多任務,這將是很是困難的,不然。例如,假設您的測試須要確保一個特定的表格單元格包含只是一個數字。 正則表達式 :[0-9] +是一個簡單的模式將匹配任何長度的十進制數。

而Selenese的匹配模式,僅支持* 和[](字符類)的特色,Selenese的正則表達式模式提供的存在在JavaScript特殊字符相同的寬陣列。如下是這些特殊字符的子集:

PATTERN MATCH
任何單個字符
[] 字符類:出現的括號內任何單個字符
* 量詞:0或多個前面的字符(或一組)
+ 量詞:1以上的前導字符(或一組)
量詞:0或1的前導字符(或一組)
{1,5} 量詞:1至5前面的字符(或一組)
| 交替:在右邊的左邊或字符/組字符/基
() 分組:常與交替和/或量詞使用

在Selenese的正則表達式模式須要與任何前綴的正則表達式:regexpi:。前者是區分大小寫的; 後者是不區分大小寫。

有幾個例子能夠幫助澄清怎麼表達規律能夠Selenese的命令中使用。第一個使用了多是最經常使用的正則表達式的圖案部分。*(「點星」)。這兩個字符序列能夠翻譯爲「0或屢次出現的任何字符」,或者更簡單地說,「任何東西,或什麼都沒有。」這是一個字符的文件名 ​​匹配模式至關於*(一個星號)。

Command Target Value
click link=regexp:Film.*Television Department  
verifyTitle regexp:.*Film.*Television.*  

上面的例子是功能上等同於前面的實施例所使用匹配模式,此一樣的試驗。惟一的區別是前綴(正則表達式:而不是水珠:)(和「任何有或全無」的模式。*而不是隻是*)。

下面測試的更復雜的例子,對於安克雷奇雅虎天氣頁面,阿拉斯加包含日出時間信息:

Command Target Value
open http://weather.yahoo.com/forecast/USAK0012.html  
verifyTextPresent regexp:Sunrise: *[0-9]{1,2}:[0-9]{2} [ap]m  

讓咱們來看看正則表達式上面的一個部件時間:

Sunrise: * The string Sunrise: followed by 0 or more spaces
[0-9]{1,2} 1 or 2 digits (for the hour of the day)
: The character : (no special characters involved)
[0-9]{2} 2 digits (for the minutes) followed by a space
[ap]m 「a」 or 「p」 followed by 「m」 (am or pm)

精確模式

精確的Selenium模式類型是邊際效用。它不使用特殊字符的。因此,若是你須要找一個實際的星號(這是特別爲通配和正則表達式模式)中,具體的模式是作的一個辦法。例如,若是你想選擇一個下拉菜單標有「真*」的項目,下面的代碼可能工做,也可能不是。在星號水珠:真正的 *模式將匹配任何東西,或什麼都沒有。因此,若是有一個標較早選擇選項「實數」,這將是選擇,而不是「真實*」選項的選擇。

select //select glob:Real *

但一樣的效果可經過逸出在正則表達式模式的星號來實現的:

                                                                       

select //select exact:Real *

爲了確保「真*」項將被選擇時,確切: 前綴能夠被用來建立一個精確圖案,以下所示:


                                           
select //select regexp:Real \*


這是至關不可能的,大多數測試者將永遠須要尋找一個星號或一組方括號,裏面還字符(字符類匹配模式)。所以,匹配模式和正則表達式模式足以讓咱們中的絕大多數。

「AndWait」命令

一個命令和它的區別AndWait 另外一種方法就是在常規命令(如點擊)會作的動做,並繼續執行下面的命令,以最快的速度就能夠了,而AndWait 替代(如clickAndWait)告訴Selenium 的頁面,做用後負載已經完成。

AndWait時動做會致使瀏覽器導航到另外一個頁面或刷新當前一個選擇老是使用。

請注意,若是您使用AndWait命令不觸發導航/刷新動做,你的測試將失敗。這是由於Selenium將達到AndWait的超時沒有看到任何導航或刷新正在進行,形成Selenium提升超時異常。

WAITFOR命令在AJAX應用程序

在AJAX驅動的Web應用程序,將數據從服務器獲取而無需刷新頁面。使用andWait命令將不會做爲頁面的工做是不實際刷新。暫停測試執行的一段時間也可能沒有比這取決於系統的響應速度,負載或瞬間其餘不可控因素,在規按期 ​​限後或更早出現,致使測試失敗的好方法,由於網頁元素。最好的方法是等待所需元件在動態的時間,而後儘快繼續執行做爲元素被找到。

這是經過使用WAITFOR命令,如waitForElementPresent或 waitForVisible,其中動態地等待,檢查每一秒的所需條件,一旦知足條件在腳本繼續下一個命令。

評估和流量控制的序列

當腳本運行時,它只是運行在序列,以後一個命令另外一個。

Selenese的,自己並不支持條件語句(if-else的等)或迭代(對,同時,等)。許多有用的測試能夠在沒有流量控制進行。然而,對於動態內容的功能性測試,可能涉及多個頁面,編程邏輯一般須要。

當須要的流量控制,有三種選擇:

  1. 運行使用Selenium-RC和客戶端庫,如Java或PHP利用編程語言的流量控制功能的腳本。
  2. 從使用storeEval命令腳本中運行一個小型的JavaScript代碼段。
  3. 安裝goto_sel_ide.js擴展

大多數測試者將導出測試腳本到使用Selenium-RC API(請參見Selenium-IDE章)的編程語言文件。然而,一些企業更願意從Selenium-IDE運行他們的腳本,只要有可能(好比,當他們運行測試對他們來講,或者當編程技能缺少許多初級水平的人)。若是您遇到這種狀況,能夠考慮JavaScript片斷或者goto_sel_ide.js擴展。

存儲命令和Selenium變量

您可使用Selenium變量存儲常量在腳本的開始。此外,當與數據驅動的測試設計(在後面的章節中討論)相結合,Selenium變量能夠用來存儲傳遞給來自命令行的測試程序的值,從其餘程序,或從文件中。

平原存儲命令是最基本的許多商店的命令,而且能夠被用於簡單地存儲在一個Selenium變量恆定值。它有兩個參數,要存儲的文本值和Selenium變量。當您爲變量的名稱只使用字母數字字符的標準變量命名約定。

Command Target Value
store paul @ mysite . org userName

後來在你的腳本,你會想用你的變量的存儲值。要訪問一個變量的值,請用大括號的變量({})和一個美圓符號這樣它前面。

Command Target Value
verifyText //div/p ${userName}



一個常見的​​使用變量是用於存儲輸入的輸入字段。

                                     

Command Target Value
type id=login ${userName}

Selenium變量能夠在第一或第二個參數被使用而且由Selenium以前由命令執行的任何其餘操做被解釋。Selenium變量也能夠定位器表達式中使用。

一個等價的存儲命令存在於每一個驗證和斷言命令。這裏有幾個比較經常使用的存儲命令。

storeElementPresent¶

這至關於verifyElementPresent。它只是存儲一個布爾值 - 「真」或「假」-depending在UI元素是否被找到。

storeText¶

StoreText對應verifyText。它使用一個定位來肯定具體的網頁文字。文本,若是找到,則存儲在變量。StoreText可用於提取從頁面文本被測試。

storeEval¶

這個命令須要一個腳本的第一個參數。在Selenese的嵌入的JavaScript是覆蓋在下一節。StoreEval容許測試存儲在變量運行腳本的結果。

JavaScript和Selenese的參數

JavaScript能夠用兩種類型的參數的Selenese:腳本和非腳本(一般表達式)。在大多數狀況下,你要訪問和/或操縱的JavaScript內的測試用例變量片段做爲Selenese的參數。在測試的狀況下建立的全部變量都保存在一個JavaScript 關聯數組。關聯數組具備字符串的索引,而不是連續的數字指標。包含測試用例的變量的關聯數組名爲storedVars。每當你想一個JavaScript片斷中訪問或操控的變量,你必須把它稱爲storedVars['yourVariableName']。

與腳本參數的JavaScript用法

一些Selenese的命令指定的腳本參數,包括 assertEval,verifyEval,storeEvalwaitForEval。這些參數不須要特殊的語法。Selenium-IDE用戶將只需將JavaScript代碼片斷到相應的領域中,一般的目標領域(由於腳本參數一般是第一個或惟一參數)。

下面的例子說明了一段Javascript代碼能夠用來執行一個簡單的數字計算:

Command Target Value
store 10 hits
storeXpathCount //blockquote blockquotes
storeEval storedVars['hits']-storedVars['blockquotes'] paragraphs

下面的例子說明了一個JavaScript片斷如何包括調用的方法,在這種狀況下,JavaScript的String對象的與toUpperCase方法和與toLowerCase方法。

Command Target Value
store Edith Wharton name
storeEval storedVars['name'].toUpperCase() uc
storeEval storedVars['name'].toLowerCase() lc


非腳本參數的JavaScript用法

JavaScript能夠也能夠用來幫助生成參數值,即便當未指定參數是類型的腳本。然而,在這種狀況下,特殊的語法要求,在整個參數值必須由前綴的JavaScript {帶有尾隨},包圍由JavaScript片斷,如在 JavaScript的{* yourCodeHere *}。下面是其中的一個例子類型命令的第二個參數 是經過JavaScript代碼使用這個特殊的語法產生:

Command Target Value
store league of nations sea​​rchString
type q javascript{storedVars['searchString'].toUpperCase()}

回聲 - Selenese的打印命令

Selenese的有一個簡單的命令,容許您打印文本到你的測試的輸出。這是提供在您的測試信息病程記錄做爲測試運行控制檯上顯示有用的。這些說明也可用於內的測試結果報告,其中存在缺陷的網頁上的測試發現問題的狀況下其能夠是用於查找有用提供上下文。最後,回聲語句能夠用來打印Selenium變量的內容。

警報,彈出窗口和多個

假設你正在測試一個網頁看起來像這樣。

 
<!DOCTYPE HTML> 
<html> 
<head> 
  <script type= "text/javascript" > 
    function  output ( resultText ){ 
      document . getElementById ( 'output' ). childNodes [ 0 ]. nodeValue = resultText ; 
    } 

    function  show_confirm () { 
      var  confirmation = confirm ( "Chose an option." ); 
      if  ( confirmation == true ){ 
        output ( "Confirmed." ); 
      } 
      else { 
        output ( "Rejected!" ); 
      } 
    } 

    function  show_alert (){ 
      alert ( "I'm blocking!" ); 
      output ( "Alert is gone." ); 
    } 
    function  show_prompt (){ 
      var  response  =  prompt ( "What's the best web QA tool?" , "Selenium" ); 
      output ( response ); 
    } 
    function  open_window ( windowName ){ 
      window . open ( "newWindow.html" , windowName ); 
    } 
    </script> 
</head> 
<body> 

  <input  type= "button"  id= "btnConfirm"  onclick= "show_confirm() "  value= "Show confirm box"  /> 
  <input  type= "button"  id= "btnAlert"  onclick= "show_alert()"  value= "Show alert"  /> 
  <input  type= "button"  id= "btnPrompt"  onclick = "show_prompt()"  value= "Show prompt"  /> 
  <a  href= "newWindow.html"  id= "lnkNewWindow"  target= "_blank" > New Window Link </a> 
  <input  type= "button"  id= "btnNewNamelessWindow"  onclick= "open_window()"  value= "Open Nameless Window"  /> 
  <input  type= "button"  id= "btnNewNamedWindow"  onclick= "open_window('Mike')"  value= "Open Named Window"  /> 

  <br  /> 
  <span  id= "output" > 
  </span> 
</body> 
</html>

 

用戶必須進行響應,以提醒/確認框,以及移動焦點到新打開的彈出窗口。幸運的是,Selenium能夠覆蓋JavaScript的彈出式窗口。

可是,咱們開始覆蓋警報前/確認/提示在個別細節,這有助於瞭解它們之間的共性。通知,確認對話框,提示全部具備如下的變化

命令 描寫
assertFoo(圖案 引起錯誤,若是模式確實的彈出文字不匹配
assertFooPresent 引起錯誤,若是彈出不可用
assertFooNotPresent 拋出錯誤,若是任何彈出窗口出現
storeFoo(可變 存儲的彈出在變量文本
storeFooPresent(可變 門店彈出變量中的文本,並返回true或false

當Selenium下運行,JavaScript的彈出窗口將不會出現。這是由於該函數調用實際被在運行時由Selenium的本身的JavaScript覆蓋。然而,僅僅由於你不能看到彈出並不意味着你沒必要處理。爲了處理彈出,你必須調用它的assertFoo(圖案) 的功能。若是你不能斷言彈出你的下一個命令的存在會阻止,你會獲得相似以下的錯誤[錯誤] 錯誤:一個意外的確認![之因此選擇 一個選項。]

通知

讓咱們先從警報,由於他們是最簡單的彈出來處理。首先,在瀏覽器中打開HTML樣品上方,而後單擊「顯示警報」按鈕。你會發現,你關閉警報的文本以後「警報已經一去不復返了。」被顯示在頁面上。如今經過使用Selenium IDE記錄相同的步驟運行,並驗證文本添加在關閉警報以後。您的測試將是這個樣子:

Command Target Value
open /  
click btnAlert  
assertAlert I'm blocking!  
verifyTextPresent Alert is gone.  


若是你只是想斷言警報是存在的,但要麼不知道或不關心它包含什麼內容,您可使用
assertAlertPresent。這將返回true或false,以虛假中止測試。你可能會想:「這很奇怪,我歷來沒有試圖斷言警報。」可是,這是Selenium-IDE處理和關閉警報爲您服務。若是除去這一步並重放測試,你將獲得下面的錯誤[錯誤] [error] Error: There was an unexpected Confirmation! [Chose an option.]。您必須包括警報的主張認可它的存在。

確認

確認書表現得就像警報相同的方式,用assertConfirmation和 assertConfirmationPresent提供相同的特性做爲其警惕同行。然而,在默認狀況下將Selenium時確認彈出選擇肯定。試着記錄點擊在樣本頁面中的「顯示確認框」按鈕,但在彈出點擊「取消」按鈕,而後斷言輸出文本。您的測試可能會是這個樣子:

Command Target Value
open /  
click btnAlert  
assertAlert I'm blocking!  
verifyTextPresent Alert is gone.  

chooseCancelOnNextConfirmation函數告訴Selenium,全部下面的確認應該 ​​返回false。它能夠經過調用chooseOkOnNextConfirmation復位。

您可能會注意到,你沒法重播本次測試,由於Selenium抱怨,有未處理的確認。這是由於事件SeleniumIDE的記錄才能使點擊和chooseCancelOnNextConfirmation被放錯順序(這是有道理的,若是你仔細想一想,Selenium能不知道你取消你打開一個確認前)簡單切換這兩個命令,你的測試將會運行得很好。

提示

提示表如今大體相同的方式發出警報,與assertPromptassertPromptPresent提供相同的特性做爲其警惕同行。默認狀況下,將Selenium等你輸入數據時的提示彈出。嘗試記錄點擊「查看提示」按鈕,在示例頁面,進入「Selenium」到提示。您的測試可能會是這個樣子:

Command Target Value
open /  
answerOnNextPrompt Selenium!  
click id=btnPrompt  
assertPrompt What's the best web QA tool?  
verifyTextPresent Selenium!  

若是您選擇取消的提示,您可能會注意到answerOnNextPrompt只會顯示空白的目標。Selenium對待取消和提示的空白項基本上是一樣的事情

調試

調試是指尋找和測試中的狀況下修復錯誤。這是測試用例開發的正常部分。

咱們不會教這裏的調試,由於大多數新用戶Selenium都已經有調試的一些基本經驗。若是這是新的給你,咱們建議你問開發商在您的組織之一。

斷點和

該SEL-IDE支持斷點設置,啓動和中止測試用例的運行,從內部測試狀況下,任何一點的能力。也就是說,能夠在測試狀況下的中間運行到一個特定的命令,並檢查如何測試用例的行爲在這一點上。要作到這一點,設置要檢查一個以前的指令斷點。

要設置斷點,選擇一個命令,單擊鼠標右鍵,而後從上下文菜單中選擇切換斷點。而後點擊運行按鈕來運行你的測試狀況下,從開始到斷點。

它有時也頗有用,從兩者中間的測試用例的結束或一個斷點後面的出發點運行測試用例。例如,假設你的測試用例先登陸到網站,而後進行一系列的測試,您要調試這些測試之一。可是,你只須要登陸一次,但你必須保持你從新運行測試,你正在開發它們。您能夠登陸一次,而後從起始點放在你的測試用例的登陸部分以後運行測試用例。這將阻止您沒必要手動註銷每次從新運行測試用例的時間。

要設置起始點,選擇一個命令,單擊鼠標右鍵,而後從上下文菜單中選擇設置/清除起點。而後點擊運行按鈕執行測試用例開始在這個起始點。

單步執行測試用例

要在時間(它「經過步」)執行測試用例一個命令,請按照下列步驟操做:

  1. 啓動測試例工具欄中的運行按鈕運行。

  1. 當即暫停執行測試用例暫停按鈕。

  1. 反覆選擇步驟按鈕。

 

查找按鈕

查找按鈕,用於查看哪些用戶界面元素上(在瀏覽器中)當前顯示的網頁被用在當前選擇的Selenium命令。爲建設一個命令的第一個參數一個定位器(參見上一節時,這是很是有用的定位器在Selenium命令章節)。它能夠與任何識別在網頁上的UI元素命令,便可以使用單擊 ,clickAndWait,類型,和某些斷言驗證命令,等等。

從表視圖中,選擇具備定位參數的任何命令。點擊查找按鈕。如今看網頁上:應該有一個明亮的綠色矩形,內含由定位器參數中指定的元素。

頁面源代碼進行調試

一般狀況下,調試測試用例的時候,你就必須看頁面的源代碼(在HTML爲你想測試網頁),以肯定問題。火狐使得這個容易。只需右鍵點擊網頁,選擇「查看 - >頁面源代碼。在單獨的窗口中的HTML打開。使用它的搜索功能(編輯=>查找)來搜索一個關鍵字找到的HTML你想測試UI元素。

或者,選擇只是一部分,而您要查看的源網頁的。而後右鍵單擊該網頁,而後選擇視圖選擇來源。在這種狀況下,單獨的HTML窗口將僅包含少許源的,具備突出在表示選擇的部分。

定位援助

每當Selenium-IDE記錄一個定位器型參數,它存儲的附加信息,它容許用戶觀看一個能夠用來代替其餘可能的定位器型參數。該功能能夠爲更多地瞭解定位器很是有用,而且常常須要幫助人們創建不一樣類型的定位比記錄的類型。

這種定位援助提出的Selenium-IDE窗口在目標領域(僅當目標字段包含一個記錄定位器型參數)的右端訪問的下拉列表中。下面是表示一個命令該下拉的內容的快照。須要注意的是下拉的第​​一列提供了替代的定位器,而第二列表示各個替代的類型。

 

 

 

編寫一個測試套件

測試套件是其顯示在IDE中最左邊的窗格中的測試用例的集合。測試套件窗格能夠經過中途選擇一個小點向下窗格的右邊緣(它是整個Selenium-IDE窗口的左邊緣,若是窗格關閉時)被手動打開或關閉。

測試套件窗格會自動將現有的測試套件打開時打開當用戶選擇從文件菜單中的新建測試用例項。在後一種狀況下,新的測試的狀況下會出現當即低於前測試用例。

SeleniumIDE還支持經過使用文件加載預先存在的測試案例 - >添加測試用例菜單選項。這容許您將現有的測試案例,以一個新的測試套件。

測試套件文件是包含一列表的HTML文件。在<TBODY>部分各行的每一個單元都包含一個連接到一個測試用例。下面這個例子是一個測試套件,包含四個測試案例:

<html> 
<head> 
    <meta  http-equiv= "Content-Type"  content= "text/html; charset=UTF-8" > 
    <title> Sample Selenium Test Suite </title> 
</head> 
<body> 
    < table  cellpadding= "1"  cellspacing= "1"  border= "1" > 
        <thead> 
            <tr><td> Test Cases for De Anza AZ Directory Links </td></tr> 
        </thead> 
    <tbody> 
        < tr><td><a  href= "./a.html" > A Links </a></td></tr> 
        <tr><td><a  href= "./b.html" > B Links </a></td></tr> 
        <tr><td><a  href= "./c.html" > C Links </a></td></tr> 
        <tr><td ><a  href= "./d.html" > D Links </a></td></tr> 
    </tbody> 
    </table> 
</body> 
</html>

 

注意

測試用例文件不該該在同一地點與調用它們的測試套件文件。而在Mac OS和Linux系統中,狀況確實如此。可是,在寫這篇文章的時候,一個錯誤阻止Windows用戶可以在別處測試用例比測試套件調用它們。

用戶分機

用戶擴展JavaScript文件,容許來建立本身的自定義和功能,以添加額外的功能。一般這是在定製命令的形式雖然此擴展並不限於其餘命令。

還有一些有用的擴展由用戶發佈的。

重要提示:這部分是過期的,咱們很快就會修改這一點。

也許最流行 ​​的全SeleniumIDE擴展是它提供流量控制在while循環和原始條件語句的形式。該擴展是goto_sel_ide.js。有關如何使用該擴展提供的功能的一個例子,看看 網頁其做者建立的。

要安裝該擴展,把路徑名的位置,您的計算機上的Selenium核心擴展SeleniumIDE的選項=>選項=>常規選項卡的領域。


選擇後肯定按鈕,則必須關閉並從新打開SeleniumIDE爲了擴展文件被讀取。您對擴展的任何變化也將要求您關閉並從新打開Selenium-IDE。

編寫您本身的擴展信息能夠在Selenium的底部附近能夠找到參考文件。

格式

格式化,在選項菜單中,您能夠選擇保存和顯示測試用例的語言。默認爲HTML。

若是你會使用Selenium-RC運行測試的狀況下,該功能是用來測試的狀況下轉化爲編程語言。選擇語言,好比Java,PHP和將要使用使用Selenium-RC用於開發測試程序。而後,只需保存使用文件測試用例=>導出測試用例。您的測試用例將被翻譯成一系列的功能,在您選擇的語言。從本質上講,是爲您SeleniumIDE生成支持你的測試程序代碼。

另請注意,若是生成的代碼不能知足您的需求,您能夠經過編輯定義生成過程的配置文件改變它。每一個支持的語言都有的配置設置,這是可編輯的。這是在選項=>選項=>格式選項卡。

注意

在寫這篇文章的時候,這個功能還沒有支持的Selenium開發商。然而,筆者已經改變以有限的方式在C#格式,它一直運做良好。

在不一樣的瀏覽器執行SeleniumIDE測試

雖然SeleniumIDE只能針對Firefox的運行測試,使用Selenium-IDE開發的測試能夠對其餘瀏覽器上運行,使用簡單的命令行界面,調用Selenium-RC服務器。本主題涵蓋在運行Selenese的測試Selenium-RC章一節。所述-htmlSuite命令行選項是所感興趣的特定特徵。

故障排除

下面是其中描述的問題,SeleniumIDE頻繁的源圖像/解釋對的列表:

表的見解是不提供這種格式。

此消息能夠在SeleniumIDE啓動偶爾在表中顯示選項卡。解決方法是關閉並從新打開SeleniumIDE。參見問題1008以獲取更多信息。若是你能重現這一可靠的話,請提供詳細信息,以便咱們可以在一個固定的工做。


錯誤加載測試案例:沒有命令發現

你用文件=>打開,試圖打開一個測試套件文件。使用文件=>打開測試套件來代替。

一個加強請求已經被提出來改善此錯誤消息。參見 問題1010。



這種類型的錯誤可能代表一個計時問題,即經過在命令定位器指定的元素並無徹底的命令執行時加載。嘗試把一個暫停5000的命令以前,以肯定問題是否真的關係到時機。若是是這樣,調查使用適當的WAITFOR ** AndWait命令失敗的命令。



當您嘗試使用變量替換髮生故障的是對的狀況下打開命令上面,則代表你尚未真正建立一個變量,其值你想訪問。這有時是因爲把變量的字段時,它應該是在目標領域,反之亦然。在上面的例子中,兩個參數存儲命令已被錯誤地放置在所須要的相反順序。對於任何的Selenese命令,第一個必需的參數必須在目標領域,第二個必須的參數(若是存在的話)都必須在字段中。


錯誤加載測試案例:[異常...「組件返回故障代碼:0x80520012(NS_ERROR_FILE_NOT_FOUND)[nsIFileInputStream.init]」nresult:「0x80520012(NS_ERROR_FILE_NOT_FOUND)」的位置:「JS框架::鍍鉻://Selenium-IDE /內容/file-utils.js ::匿名:: 48行「數據:無]

其中在測試套件的測試狀況下是不能被發現。確保測試用例的確是位於那裏的測試套件代表它的位置。此外,請確保您的實際測試狀況下,文件具備.html擴展不管是在其文件名,並在它們被引用的測試套件文件。

一個加強請求已經被提出來改善此錯誤消息。參見 問題1011。



您的擴展文件的內容並無通過Selenium-IDE閱讀。請確保您指定了正確的路徑名擴展文件經過 選項=>選項=>常規,在Selenium的核心擴展領域。此外,SeleniumIDE必須的任何變化到任何一個擴展名的文件後,從新啓動到內容Selenium核心擴展 領域。

參考資料:

http://www.seleniumhq.org/docs/02_selenium_ide.jsp

http://www.cnblogs.com/hyddd/archive/2009/05/24/1487967.html

相關文章
相關標籤/搜索