軟件測試 | Selenium驗證頁面元素
驗證頁面上的UI元素,是你在自動化測試案例過程中最常用到的特性。Selenese允許通過多種方式驗證UI元素。了解這些不同驗證方式非常重要,因為它們決定了你實際正在測試什么。
舉例,你是否正在測試如下情況:
(1)一個UI元素存在于頁面上某個位置;
(2)特別穩(wěn)定存在于頁面上某個位置;
(3)特定文本存在于頁面上指定位置。
舉個例子,如果你要測試文本標題,那么文本內(nèi)容和它所在的頁面頂部位置,測試案例都需要關(guān)心,如果你要測試主頁上某個圖片,但是開發(fā)人員經(jīng)常改變圖片所在的位置,那么你只需要測試特定圖片是否存在于頁面上某個位置就行了。
1.Assertion或者Verification?
斷言或者驗證的選擇關(guān)系到如何管理“失敗”。如果瀏覽器打開的測試頁面并非期望頁面,那就沒有必要檢查頁面的第一張圖片是否正確。如果案例沒有運行在正確的頁面上,那么你肯定希望終止測試案例執(zhí)行,接著查看原因并做出修復。從另外一個方面來說,你肯能希望檢查頁面上的許多屬性,而不在第一個錯誤處就終止案例執(zhí)行,這樣你可以回顧頁面上的所有失敗,并做出正確操作。斷言會使案例執(zhí)行失?。‵ail),并終止當前案例執(zhí)行,而驗證也會使案例執(zhí)行失敗(Fail),但允許案例繼續(xù)執(zhí)行。
最好的辦法是用合理的邏輯組合你的測試命令,每個組合都是斷言之后有一個或者多個驗證,舉例如表4-1所示。

上面的例子中,首先打開一個頁面,接著通過比較標題,正確加載斷言頁面。只有斷言通過,接下來的命令才會被執(zhí)行,并驗證特定文本是否出現(xiàn)在指定地方。測試案例接著斷言第一個表格第二行的第一列表含有期待值,同樣只有斷言通過,才會驗證那一行中的其他元素。
2.verifyTextPresent
verifyTextPresent命令被用來驗證特定的文本是否存在于頁面某處,它攜帶一個參數(shù)(text pattern)用于驗證,舉例如表4-2所示。

這將會使得Selenium在當前測試頁面上,搜尋和驗證“Marketing Analysis”是否存在于某處。當你只關(guān)心頁面上是否存在特定文本時,使用verifyTestPresent。如果你關(guān)心文本的位置,請不要使用它。
3.verifyElementPresent
當測試特定UI元素是否存在、且不關(guān)心起內(nèi)容時,請使用這一命令。這一命令不檢查文本,僅檢查HTML tag。一個常見的應用是檢查圖片是否存在,參見表4-3

這個命令驗證被<img>HTML tag標識的圖片在頁面上是否存在。第一個參數(shù)是定位器,用于告訴Selenese命令怎樣找到UI元素。
verifyElementPresent可以被用來檢查頁面上HTML tag是否存在。你可以檢查鏈接、圖片、分區(qū)等。如表4-4所示的一些例子。

4.verifyText
當文本和它的UI元素都要被測試時,請使用verifyText命令,用法如表4-5所示。verifyText必須使用定位器。如果你選擇XPath或者DOM定位器,就可以檢查特定文本是否出現(xiàn)在頁面上的特定位置(相當于頁面上其他元素而言)。
