一直做開發,很少關注測試工具,尤其是以往的測試都主要是Junit測試,難免在web層面上因沒有嚴格測試而經常出現bug,近來小小接觸了一下這一類的測試工具,感覺蠻好玩的,在此和大家分享一下,希望多多交流。
一、Selenium IDE 介紹
下載selenium ide插件并安裝(firefox),在tools菜單下可以看到。
單擊上面的紅色原點,即可對你在網頁上的任何操作做記錄,以命令方式記錄。這些命令你也可以自己寫下來,再批量運行,就會看到瀏覽器自動執行所有的動作,這樣就可以保存為測試腳本了,也就可以對每次的測試做備案了。
下面來說說selenium的命令格式,主要由三部分組成:
command 操作命令
target 操作對象,通常是頁面及頁面元素
value 作為斷言的值
1、元素locator的訪問方式:
1)id=id,假如元素id是username,則target直接寫username即可
2)name=name,可以通過name直接獲得第一個該名稱的元素
例如:username
name=username
3)dom=javascript表達式:
例如:dom=document.forms['myForm'].myDropdown
dom=document.images[56]
dom=function foo() { return document.links[1]; }; foo();
4)xpath=xpath表達式,使用xpath表達式來定位一個元素。
例如:xpath=//img[@alt='The image alt text']
xpath=//table[@id='t1']//tr[4]/td[2]
xpath=//a[contains(@href,'#id1')]
5)link=textPattern
例如:link=新聞
主要的訪問方式即以上幾種。
2、常用Actions
1)open(url)
接收一個參數url,即command=open, target=url
2)type(locator,value)
給locator指定的元素或屬性賦值以value
3)click(locator)
單擊一個鏈接、按鈕、checkbox或radio等等,locator即元素定位
4)clickAndWait(locator)
單擊一個鏈接、按鈕等等元素,單擊后等待新的頁面加載
我們的表單提交,就可以用這個方法來單擊submit按鈕。
類似的方法還有selectAndWait、typeAndWait、focusAndWait……
5)verifyLocation(pattern)
校驗當前頁面的絕對路徑(url)是否與pattern匹配,關于pattern的解釋,我們在下面具體說明。
6)verifyValue(locator, pattern)
校驗指定元素的值是否與指定pattern匹配
7)verifyVisible(locator)
校驗指定元素是否可見,如果當前元素的style="display:none",即不可見。
8)verifyTextPresent(pattern)
校驗當前頁面是否出現該文字
9)verifyChecked(locator)
用于校驗checkbox是否被選中
10)verifyAttribute(locator, pattern)
校驗指定的元素屬性值,是否匹配pattern
例如:verifyAttribute(link=All Search Results for "bike"@href, 'glob:*/search/bike?c=0*')
即校驗指定的link的href屬性是否匹配"glob:*/search/bike?c=0*"
11)fireEvent(locator,eventName)
用于調用locator指定的元素的指定eventName的事件,例如:
fireEvent(userLoginName,blur),即調用文本框userLoginName的失去焦點事件
以上是較為常用的幾個方法,還有許多方法的詳細介紹可以參見:http://seleniumhq.org/projects/core/reference.html
3、pattern的寫法
在firefox的selenium IDE中,方法的參數pattern,即匹配的文本,共有三種匹配方式:
1)exact:string
精確匹配,必須完全匹配當前字符串
2)regexp:regexp
正則表達式匹配,這里主要是針對javascript中支持的正則表達式
3)glob:pattern
通配符匹配,*表示任意長度任意字符串,?表示任何單個字符,
例如方法 verifyLocation(*/search?key=bike&c=*),即開頭的域名部分和之后可能附帶的一些參數都做了忽略。
需要說明的是:這里pattern的寫法,僅僅是在IDE工具,即用瀏覽器以html方式直接運行腳本執行測試案例的方式中才有效。在后臺test case中,只能使用equals或者matches的方式,才能驗證。
二、Selenium Test Case介紹
原文轉自:http://www.uml.org.cn/Test/200902057.asp