菜鳥(niǎo)學(xué)自動(dòng)化測(cè)試(三)----selenium 命令
關(guān)于,selenium 命令這一部分,為了便于像我一樣的菜鳥(niǎo)理解,我采用通過(guò)例子講命令的方式。邊學(xué)邊總結(jié)吧!相互學(xué)習(xí)。呵呵。
菜鳥(niǎo)Selenium 命令通常被稱為selenese,有一系列運(yùn)行測(cè)試案例所需的命令構(gòu)成。
----// Actions
Actions描述了用戶所會(huì)作出的操作。
Action 有兩種形式: action和actionAndWait, action會(huì)立即執(zhí)行,而actionAndWait會(huì)假設(shè)需要較長(zhǎng)時(shí)間才能得到該action的相響,而作出等待,open則是會(huì)自動(dòng)處理等待時(shí)間。
操作說(shuō)明:
打開(kāi)谷歌首頁(yè),輸入“selenium 環(huán)境配置”字段,點(diǎn)擊“搜索”按鈕。
命令說(shuō)明:
open
open(url)
- 在瀏覽器中打開(kāi)URL,可以接受相對(duì)和路徑兩種形式
- 注意:該URL必須在與瀏覽器相同的安全限定范圍之內(nèi)
Highlight(locator)
- 暫時(shí)將指定元素的背景色改變?yōu)辄S色,有利于調(diào)試。
pause
pause(millisenconds)
- 根據(jù)指定時(shí)間暫停Selenium腳本執(zhí)行
- 常用在調(diào)試腳本或等待服務(wù)器段響應(yīng)時(shí)
type
type(inputLocator, value)
- 模擬人手的輸入過(guò)程,往指定的input中輸入值
- 也適合給復(fù)選和單選框賦值
click
click(elementLocator)
- 點(diǎn)擊連接,按鈕,復(fù)選和單選框
- 如果點(diǎn)擊后需要等待響應(yīng),則用"clickAndWait"
- 如果是需要經(jīng)過(guò)JavaScript的alert或confirm對(duì)話框后才能繼續(xù)操作,則需要調(diào)用verify或assert來(lái)告訴Selenium你期望對(duì)對(duì)話框進(jìn)行什么操作。
goBack()
模擬點(diǎn)擊瀏覽器的后退按鈕
close()
模擬點(diǎn)擊瀏覽器關(guān)閉按鈕
操作說(shuō)明:
打開(kāi)谷歌搜索首頁(yè),在左上邊的選項(xiàng)中選擇“更多”,在下拉列表中選擇“博客”,然后在搜索欄內(nèi)輸入“蟲(chóng)師”,點(diǎn)擊搜索按鈕,然后打開(kāi)我的博客(通過(guò)我url的方式)
命令說(shuō)明:
其實(shí)本例中并沒(méi)有出現(xiàn)新命令,但有一個(gè)問(wèn)題。在搜索的結(jié)果中,標(biāo)紅的兩行作用是一樣的,都能打開(kāi)我的博客。
click通過(guò)頁(yè)面的字符匹配,點(diǎn)擊鏈接,但打開(kāi)的新窗口中只有地址欄;用click的方式,如果頁(yè)面發(fā)生變動(dòng),沒(méi)匹配到我想到我輸入的關(guān)鍵字,頁(yè)腳本會(huì)失敗。
open直接通過(guò)鏈接跳轉(zhuǎn),但又失去了前面搜索操作的意義。-----當(dāng)然,這里只是把它作為一個(gè)問(wèn)題提出來(lái)。真實(shí)項(xiàng)目中,可能我們是不會(huì)遇到這種情況的。
用興趣的話將上面的例子驗(yàn)證一下,算是對(duì)第一個(gè)例子的理解和加強(qiáng)吧!
這個(gè)例子錄制的是開(kāi)心網(wǎng)的注冊(cè)頁(yè)面,這不是一個(gè)完整的注冊(cè),因?yàn)楹笠豁?xiàng)要求輸入驗(yàn)證碼。所以,算錄制完成,也無(wú)法正;胤,這里只是為了講解幾個(gè)命令。(*^__^*) 嘻嘻……
可能通過(guò)上面的表格,你依然覺(jué)得不夠直觀。那么,看看下面的截圖呢?
相信截圖還是很清晰的說(shuō),那根據(jù)上面的截圖講解了。。
操作說(shuō)明:
打開(kāi)開(kāi)心網(wǎng)注冊(cè)頁(yè)面, 填寫(xiě)email地址,輸入密碼,重復(fù)密碼,輸入姓名,選擇性別(男女)選擇出生年、月、日,選擇權(quán)限(都誰(shuí)可以訪問(wèn)我的頁(yè)面)
命令說(shuō)明:
select
select(dropDownLocator, optionSpecifier)
- 根據(jù)optionSpecifier選項(xiàng)選擇器來(lái)選擇一個(gè)下拉菜單選項(xiàng)
- 如果有多于一個(gè)選擇器的時(shí)候,如在用通配符模式,如"f*b*",或者超過(guò)一個(gè)選項(xiàng)有相同的文本或值,則會(huì)選擇第一個(gè)匹配到的值
陌生的命令這一個(gè)啦,關(guān)于命令target部分(是id=...),我們可以通過(guò)firefox的插件firebug工具,進(jìn)行查看頁(yè)面元素,前面有講解,這里不多說(shuō)了。
----//例子中沒(méi)提交的命令
下面的命令我還沒(méi)有找到合適的例子做演示,所以,先羅列出來(lái),有時(shí)間在做演示。
fireEvent
fireEvent(elementLocatore,evenName)
模擬頁(yè)面元素事件被激活的處理動(dòng)作
fireEvent textField focus
fireEvent dropDown blur
waitForCondition
waitForCondition(JavaScriptSnippet,time)
- 在限定時(shí)間內(nèi),等待一段JavaScript代碼返回true值,超時(shí)則停止等待
waitForCondition var value="/selenium.getText(""foo"); value.match(/bar/); 3000
waitForValue
waitForValue(inputLocator, value)
- 等待某input(如hidden input)被賦予某值,
- 會(huì)輪流檢測(cè)該值,所以要注意如果該值長(zhǎng)時(shí)間一直不賦予該input該值的話,可能會(huì)導(dǎo)致阻塞
waitForValue finishIndication isfinished
store,stroreValue
store(valueToStore, variablename)
保存一個(gè)值到變量里。
該值可以由自其他變量組合而成或通過(guò)JavaScript表達(dá)式賦值給變量
store Mr John Smith fullname
store $.{title} $.{firstname} $.{suname} fullname
store javascript.{Math.round(Math.PI*100)/100} PI
storeValue inputLocator variableName
把指定的input中的值保存到變量中
storeValue userName userID
type userName $.{userID}
storeText, storeAttribute
storeText(elementLocator, variablename)
把指定元素的文本值賦予給變量
storeText currentDate expectedStartDate
verifyValue startDate $.{expectedStartDate}
storeAttribute(.{}elementLocator@attributeName,variableName.{})
把指定元素的屬性的值賦予給變量
storeAttribute input1@class classOfInput1
verifyAttribute input2@class $.{classOfInput1}
chooseCancel.., answer..
chooseCancelOnNextConfirmation()
- 當(dāng)下次JavaScript彈出confirm對(duì)話框的時(shí)候,讓selenium選擇Cancel
- 如果沒(méi)有該命令時(shí),遇到confirm對(duì)話框Selenium默認(rèn)返回true,如手動(dòng)選擇OK按鈕一樣
chooseCancelOnNextConfirmation
- 如果已經(jīng)運(yùn)行過(guò)該命令,當(dāng)下一次又有confirm對(duì)話框出現(xiàn)時(shí),也會(huì)同樣地再次選擇Cancel
answerOnNextPrompt(answerString)
- 在下次JavaScript彈出prompt提示框時(shí),賦予其anweerString的值,并選擇確定
answerOnNextPrompt Kangaroo
關(guān)于selenium 命令,這一部分,我學(xué)的比較仔細(xì),所以,也想講的仔細(xì)點(diǎn)。關(guān)于后面,還會(huì)說(shuō)到:
* 驗(yàn)證頁(yè)面元素
* 定位頁(yè)面元素
* 文字范本匹配