菜鳥學自動化測試(六)----selenium 命令之文字范本匹配
文字范本匹配
=======================================
文字范本匹配其實可以理解為通配符。我想大家都用過windows 系統自帶的搜索功能。
* 星號代表一個或多個字符。
? 問號代表一個字符。
范本也是經常被selenes命令使用的參數;范本允許你使用特殊字符來描述期望值,而不是準確的說明期望值。
selenium中需要范本的命令包括:
verifyTextPresent、verifyTitle、verifyAlert、assertConfirmation、verifyText、verfyPrompt、
那么有哪些范本類型呢?
一般我們常用有三種:globbing、regular expressions、Exact.
一、globbing范本
很多人熟悉globbing,因為它被用在DOS或者餓UnixLinux命令中作為通配符。在selenium實現中,globbing只支持兩種特殊符號:
1) * 意思是“匹配任何東西”,空、一個或多個字符
2) [] (字符集)意思是“匹配任何方括號內的字符”。連接符可以被用來縮短窮舉符(必須在ASCCII字符集內連續)。
舉例:
[aeiou]----匹配任何小寫元音字母
[0-9]-----匹配任何數字
[a-zA-Z0-9]------匹配任何字母與數字
為了使selenese命令中指明使用globbing范本參數,你可以在范本前加上“glob: ”前綴。當然globbing是默認范本模式,因此不加也是可以的。
二、regular expressions 范本
regular expressions范本是Selenese支持的三種范本類型中功能強大的。regular expressions同樣被很多高級語言所支持。
比如:假設你的測試需要保持特定表格單元中僅含有數字,regexp:[0-9]+ 是一個簡單范本,可以匹配任何長度的十進制數。
regular expressions支持javaScript的所有特殊字符。表如下:
在selenese中regular expressions范本必須加上“regexp: ”或者“regexpi:”;前一種方式對大小寫敏感,后一種方式對大小寫不敏感。
舉例:
下面例子,測試Yahoo! Anchorage, Alaska的天氣頁面是否包含日出時間的信息:
對上面范本含義的解釋:
三、 Exact范本
Exact類型的范本很少被使用,它完全不使用特殊字符。但是,它卻有著自己的特長。
假如你想找一個真實的 * 星號 怎么辦呢?因為星號在前面連個范本中被定義成個特殊字符。
Exact范本將是一個解決方式。使用Exact范本需要加“exact:”前綴。
舉例:
如果你想從下拉列表中選擇一個標記為“real *”的選項。
如果使用globbing范本方式“glob:Real *”進行匹配的話,它可能工作正常,也可能不正常。因為globbing范本中的星號會匹配任何東西或空。
這時,我們可以使用Exact范本來表示:
當然,通過regular expressions 范本的轉義星號,也能達到效果。
在大多數測試中并不需要找星號或者中間有字符的方括號,因此,regular expressions 范本和globbing范本可以滿足我們大多數的需求。
小結:
關于,selenium命令這一部分,我學完了,記得剛開始用selenium IDE錄制下來的命令與對應的參數,看的我似懂非懂。現在再看會變的非常清晰。
其實命令這一部分都是比較基礎的東西,理解了這一部分后面的學習才會比較順利。相信學習QTP的同學都是要學習VBS腳本的,雖然不懂VBS你也能通過QTP的錄制功能簡單使用QTP。
但是,越往后面你對QTP的使用會變的很吃力,在項目的應用中會遇到各種問題,錄制不是的,你需要修改,有時需要手動來寫vbs腳本,如果vbs不熟悉的話,你對QTP使用將會寸步難行。磨刀不誤砍柴工嘛!