1. 程式人生 > >Selenium 的基本瞭解以及Selenium IDE外掛的知識點

Selenium 的基本瞭解以及Selenium IDE外掛的知識點

Selenium 是用於網頁的測試

selenium Grid 是使用於分散式測試

使用到html、xml以及Xpath進行元素定位。

Selenium可以用來錄製指令碼。
關鍵字測試驅動的方式


command  表示要執行的操作是什麼
target  表示操作的介面元素是哪個
value   表示操作時使用時多少

/*
1、/ 表示填寫的Base URL
2、id = kw  kw表示搜尋文字框
3、id = su  (點選“百度一下”按鈕,然後執行clickAndWait,即為單擊執行之後,等待頁面載入完畢。)
*/

裡面有兩個執行測試的按鈕:
play entire test suit 表示執行整個測試套件,也就會左側的所有的測試用例都會執行
play current test case 執行當前選中的測試用例。

command  target   value
type           id=lst-ib  selenium 
表示型別 搜尋元素的id是“lst-ib” ,然而搜尋的關鍵字是selenium。

click   name=btnK  
表示的是通過名字來進行查詢。

ps:這些元素的特性都是通過制定然後右鍵,通過firebug檢視裡面的內容。

command : 要執行的操作是什麼,必須的引數,並且這個的選項很多。
selenium的命令通常稱為“selense”,它是一套執行測試的的命令集。

selense
1)基於HTML 標記,用於測試UI元素是否存在,驗證指定內容是否正確,檢查連結是否可用,可以輸入欄位,選擇列表的選項,提交表單病操作表格中的資料,
2)用於輔助測試,eg:驗證視窗的大小,滑鼠的位置、警告資訊,彈出視窗、Ajax功能時間處理以及其他各種web應用程式功能。

3種分類型別:
Action(操作):用於操作應用程式的狀態
Accessor(儲存):檢查應用程式的狀態,並且將結果儲存到變數中。eg:“storeTitle” 用於自動生成Assertion。
Assertion(斷言):類似Accessor命令,驗證程式的狀態,並且確定這些狀態符合預期的結果。eg:“確定該頁面的標題是****”“驗證該複選框為勾選狀態”

Action的命令:



1、瀏覽器的操作
1)、open(url) 
(1)url = base url + target
eg:if base url = http://www.baidu.com target=index.html 
url = http://www.baidu.com.index.html
(2)if target是以http://開頭的,將會忽略base url

2)、goback() 瀏覽器的後退功能

3)、refresh() 瀏覽器的重新整理功能

4)、windowFocus() 啟用當前選擇中的瀏覽器視窗

5)、windowMaximize() 將當前選中的視窗最大化

6)、close() 關閉當前選中的瀏覽器的視窗

2、介面元素的基本操作
1)、type(locator,value)  表示input型別的輸入,也就是文字的輸入,同時也可以是選項,選中的值將是選項中的選項值,而不是文字。
target:元素的定位表示式
value:要輸入的值

2)、typekeys(locator,value)  這個命令已經過時,需要時使用sendKeys來替換;
模擬鍵盤一個一個的字元的輸入過程.
引數同上。

3)、click(locator)點選複選框、單選框以及連結。
(單擊需要載入頁面,一般在後面使用waitForPageToLoad或者使用clickAndWait)

4)clickAt(locator,coordString) 餘click相似,但是需要填寫相應的座標
coordString(value):eg:(10,20)指定元素上進行單擊的座標(x,y)

5)doubleClick(locator)
雙擊,一般在後面使用waitForPageToLoad或者使用doubleClickAndWait

6)doubleClickAt(locator,coordString)
和上面的差不多

7)select(selectLocator,optionLocator)
用於在下拉框中選擇指定的選項
(&&選項的定位方式和下拉框的定位方式有點不同)
label= 文字值,基於選項的文字進行匹配(預設方式),eg:label=three
value= 真實值,基於選項的真實值進行匹配,eg:value=3
id=id 基於選項的id進行匹配,eg:id=option2
index=index,基於選項的索引進行匹配,eg:index=2
(索引是從0開始的)
target:下拉列表框的定位表示式
value:下拉列表框的選項表示式

check(locator) 勾選複選框或者單選框

uncheck(locator) 去選勾選

focus(locator) 將焦點移植到指定的元素上 
eg:若是有一個文字框,可以先將焦點移植到文字框,在用鍵盤輸入值。

3、
鍵盤滑鼠的模擬動作
altkeyDown() 模擬按下alt鍵不放,直到呼叫altKeyUp命令或者載入新的頁面
altKeyUp() 鬆開alt鍵

controlKeyDown()  模擬按下ctrl鍵不放,直到呼叫altKeyUp命令或者載入新的頁面
controlKeyUp() 鬆開ctrl鍵

shiftKeyDown()  模擬按下shift鍵不放,直到呼叫altKeyUp命令或者載入新的頁面
shiftKeyUp() 鬆開shift鍵

……………………很多這方面的操作
即為模擬鍵盤和滑鼠的操作,鍵盤操作豪闊了鍵盤按下的組合件產生的效果。

4、設定類操作
1)setTimeout(timeout)
執行一個操作的最大等待時間,僅僅使用open、waitfor開頭以及帶有AndWait字尾的命令。
2)setSpeed(value) 設定各個步驟執行的時間間隔

5、除錯控制和除錯類工作
1)、pause(waitTime) 使測試在指定的時間內暫停執行(類似設定等待時間,什麼都不做)
2)、break()暫停當前正在執行的操作,知道使用者手動點選繼續的按鈕。
3)、captureEntirePageScreenshot(filename,kwargs)將當前的視窗進行截圖病儲存為PNG檔案
target:儲存圖片存放的目錄 eg:D:\123.png
4)、highlight(locator) 暫時將制定元素的背景改為黃色,並且在後面自動取消效果。一般適用於除錯。
echo(message) 指定資訊打印出來,一般用於除錯。

Accessor

檢查應用程式的狀態,將結果存放在變能量中。
eg:storeTitle,Accessor自動生成Assertion命令,讀取值的方式為:$(變數名稱)
1)store(expresson,variableName) 指定值存在變數中
target:要儲存的值
value:變數名稱,target所寫的值就存放在這裡。
2)storeTitle(variableName) 用於存放當前網頁的標題
target:變數名稱,該變數就是指存放的地方。
3)storeLocation(varibleName) 儲存當前網頁的url
4)storeValue(locator,value) 就是在input元素中的內容,將target中的值存放在value中,
5)storeEdiable(locator,value) 儲存input中的元素的可編輯狀態
6)storeText(locator,variableName) 用於儲存某個元素的文字值(eg:連結,純文字)
7)storeChecked(locator,value) 儲存單選框或者複選框的勾選情況,勾選true,不勾選false
8)storeSelectedIndex(selectLocator,variableName) 獲選所選項在列表中的索引(從0開始)
9)storeSelectedLabel(selectLocator,variableName)獲取指定列中所選項的文字值
10)storeSelectedValue(selectLocator,variableName)獲取指定列中所選項的真實值(即為:value的值)
11)storeSelectedOptions(selectLocator,variableName)獲取指定列中所選項的文字,以都好隔開
12)storeTableCell(tableCellAddress,variableName)
獲取表格(table元素)中某個單元格(td元素的值)
target:格式:表格的定位表示式.行號.列號
(行列號都是從0開始的)
value:變數名稱
13)storeAttribute(attributeLocator,variableName)獲取指定屬性的值
14)storeTextPresent(pattern,variableName)
15)storeElementPresent(locator,variableName)驗證指定的壓面是否存在於頁面中
storeVisible(locator,variableName)
在頁面上看不到,但是可以通過storeElementPresent命令進行驗證,仍然返回true,這是因為visibility屬性為hidden,display屬性為true。
storeSpeed(variableName)獲取執行的額速度
(獲取每個測試步驟之間的執行間隔時間(預設為0,單位為毫秒))

Assertion(斷言)

與accessor類似
主要用於驗證某個命令是否為真
3種 模式的使用:assert、verify、waitFor
可以使用assertText、verifyText、waitForText
區別:
assert失敗,將會終端
verify失敗,繼續執行後面
waitFor用於執行等待,(非常適合使用在Ajax上面)

幾乎每一個accessor都是對應著一個Assertion。
1、驗證網頁的標題是否等於或者不等於預期值
assertTitle(pattern) /assertNoTitile(pattern) /verifyTitle(pattern) /verifyNoTitle(pattern)/waitForTitle(pattern)/waitForNotTitle(pattern)

2、驗證網頁的url是否等於或者不等於預期值
assertLocation(pattern) ……

3、驗證input元素的值是否等於或不等於預期值
assertValue(locator,pattern) ……

4、驗證input元素的可編輯狀態是否為預期的狀態
assertEditable(locator) ……

5、驗證某個元素的文字值是否等於預期的值
assertValue(locator,pattern) ……

6、驗證複選框或單選框的勾選情況是否符合預期
assertChecked(locator) ……

7、驗證所選的列表中的索引是否符合預期值

8、驗證指定的列表中所選項的文字值是否符合預期值

9、驗證指定列表中所選項的真實值

10、驗證指定列表中所有選項的文字是否符合預期值

11、驗證表格(table元素)中的某個單元格(td元素)

12、驗證指定屬性的值是否符合預期

13、驗證指定的頁面是否在頁面中出現

14、驗證指定元素是否存在於頁面上

15、驗證頁面中是否顯示指定元素

總結:上面主要講了command中的3種類型的action,Accessor、assertion 這些命令的常用,使用的時候可以查閱一下就好。


第二部分
Target 主要用於識別web中的元素
1、identity定位,預設的定位方式
(預設通過id、name屬性來進行查詢)

2、id定位
知道某個元素的id,

3、name定位
定位方式識別首個name屬性等於定位值的頁面元素。
若是多個name的屬性值相同,那麼可以使用過濾進一步細化,預設的濾過型別是value。

4、xpath定位
(找不到合適的id、name的屬性進行定位的時候,我們可以使用xpath來進行定位)因為xpath除了可以使用id,name來定位之後,還可以使用其他的元素進行定位。
(可以是絕對路徑,但是不好用)
eg:xpath = /html/body/form[1]
或者 
xpath = //form[@id='loginForm']
xpath = //form[input^@name='usename']

5、(link關鍵字的內容進行定位)連結文字定位
<a href="continue.html">Continue</a>
eg:link = Continue

6、DOM 定位
通過js來定位
(由於只有dom定位才會使用document開頭,所以沒有必要寫“dom=”)
eg:
dom = document.getElementById('loginform');

7、css定位
使用選擇器來為文件中的元素繫結樣式屬性
<html>
<body>
<form id="loginForm">
<input class="required" name ="username" type="text"/>
<input class="required passfield" name="passeword" type="password"/>
<input name="continue" type="submit" value="login"/>
<input name="continue" type="button" value="Cleer"/>
</form>
</body>
</html>
ps:
返回第三行元素:css=form#loginForm
返回第四行元素:css=input[name="username"]
………………

8、隱式定位
target表示式中可以省略“定位型別=”的情況
1)表示式沒有指定預設為identity
2)使用xpath來定位,則是使用//開頭
3)dom定位則是使用document開頭

第三部分 value
value填什麼值和command有密切的關係
value值的型別:純文字值、帶有變數的字串、js的字串

1)帶有變數的字串,即為含有字串在value中(字串+變數的組合)
2)帶js的字串, 含有js語句的變數。(js+字元變數)

4、日誌和應用
Selenium IDE 包括了
1)Log(日誌)(常用):輸出測試的相應的資訊
2)Reference(引用)(常用):顯示我們滑鼠點選哪一行顯示的具體的操作
3)UI-Element(UI元素)、
4)Rollup。

5、拷貝測試程式碼
裡面右鍵即可copy進行拷貝和在記事本中貼上
然而,預設是html的程式碼
然而可以轉化程式碼,選擇(選單上)options——>ClipBoardFormat,選擇對應的語言和Selenium版本即可。

將命令匯出為程式碼
(匯出用例或者匯出用例組)
“檔案”——> Export Test Case As 
“檔案”——> Export Test Suite As 
可以選擇對應的語言和版本。

相關的命令的使用可以上網查閱或者官方文件中。