Selenium-RC使用技巧-v1.0-夏輝_第1頁
Selenium-RC使用技巧-v1.0-夏輝_第2頁
Selenium-RC使用技巧-v1.0-夏輝_第3頁
Selenium-RC使用技巧-v1.0-夏輝_第4頁
Selenium-RC使用技巧-v1.0-夏輝_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Selenium RC使用技巧版本:V1.0日期:2008-8-5作者:夏輝(xiahui_1)推薦精選本文檔所有例子,請參照”jspNews”項目。1、HTML元素定位描述分為以下五種方式:1、以ID號定位selenium.click(“id=idOfThing”);2、以名稱定位 selenium.click(“name=nameOfThing”); 3、以Xpath定位,Xpath是一套標準規范selenium.click(“xpath=/imgalt=The image alt text”); 4、以DOM定位selenium.click(“dom=document.images56”

2、 ); 5、以link方式定位selenium.click(“link=Test Page For Selenium”); 6、以CSS方式定位selenium.click(“css=span#firstChild”); 2. frameset操作技巧2.1 獲取當前frameset網頁比如當前網頁(index.html)是frameset網頁,frameset布局如下:index=1name= leftFrameindex=0 name= topFrameindex=2name= rightFrame當顯示index.html時,可以通過下列語句判斷是否是index.html網頁:this.

3、sel.open(http:/localhost:8080/jspNews);推薦精選org.junit.Assert.assertEquals(testone, this.sel.getTitle();具體參見:IndexTest.java - testIndexPageExist()2.2 獲取當前frameset中子網頁用戶可以通過當前frameset網頁獲取其中的子網頁,代碼如下:this.sel.selectFrame(index=1);或者this.sel.selectFrame(leftFrame );例如:查看用戶是否已登錄leftFrame首先顯示的是登錄網頁(login.j

4、sp),如果用戶輸入正確的用戶名和密碼,則leftFrame顯示該用戶的功能操作網頁(left.html)。/首先顯示index.html網頁this.sel.open(http:/localhost:8080/jspNews);/輸入用戶名和密碼sel.type(name=name, admin);sel.type(name=pwd, 123456);/模擬點擊確定按鈕sel.click(name=btnsub);/最多等待10秒sel.waitForPageToLoad(10000);/選擇index=1的子網頁,即frameset=leftFrame區的網頁this.sel.select

5、Frame(index=1);/判斷該網頁的標題是否是leftwindoworg.junit.Assert.assertEquals(leftwindow,this.sel.getTitle();具體參見:IndexTest.java - testLoginSuccess ()2.3 從framework中的子網頁跳到主網頁如果用戶使用了this.sel.selectFrame(index=1);從默認的主網頁跳轉到了子網頁,那么可以通過下列語句返回到主網頁。this.sel.selectFrame(relative=parent);推薦精選3. html文本框操作技巧3.1 模擬輸入文本,并

6、判定/對文本框賦值this.sel.type(name=Tname,夏天);/將文本框的值賦給textValueString textValue=this.sel.getValue(name=Tname);org.junit.Assert.assertEquals( 夏天, textValue);具體參見:formExampleTest.java - testtextFrame ()4. html下拉列表框操作技巧4.1 判斷下拉框的所有數據項是否和期望相同首先建立期望的數據項,如下所示:String expectProfessions=new String3;expectProfession

7、s0=計算機;expectProfessions1=文學;expectProfessions2=數學;再從當前網頁的下拉框中讀取所有的數據項:String actualProfessions=this.sel.getSelectOptions(profession);利用junit4 獨有的數組判定函數進行比較org.junit.Assert.assertArrayEquals(下拉框出錯, expectProfessions, actualProfessions);具體參見:formExampleTest.java - testSelectFrame ()4.2模擬用戶選擇一個數據項,并判定

8、首先模擬用戶選擇一個數據項,如下所示:/將名為profession的下拉框,選擇第一個數據項this.sel.select(name=profession, index=1);1、網頁不提交,判定模擬選擇的數據項的名字String selectName=sel.getSelectedLabel(name=profession);org.junit.Assert.assertEquals(文學, selectName);2、網頁不提交,判定模擬選擇的數據項的值String selectName=sel.getSelectedValue(name=profession);推薦精選org.junit

9、.Assert.assertEquals(文學, selectName);3、網頁提交后,判定模擬選擇的數據項的值this.sel.click(btnSub);this.sel.waitForPageToLoad(5000);org.junit.Assert.assertTrue(下拉框沒有選擇 文學, this.sel.isTextPresent(文學-2);具體參見:formExampleTest.java - testSelectFrame ()5. html復選框操作技巧5.1 模擬選中一個復選框,并判定首先模擬用戶選中復選框,并判定/模擬用戶選中數據項-體育this.sel.chec

10、k(name=Tch1);/判定是否選中boolean selected=this.sel.isChecked(name=Tch1);org.junit.Assert.assertEquals(true, selected);具體參見:formExampleTest.java - testCheckbox()5.2 模擬取消選中一個復選框,并判定首先模擬用戶選中復選框,再模擬取消選中,并判定/模擬用戶選中數據項-體育this.sel.check(name=Tch1);/模擬用戶取消選中數據項-體育this.sel.uncheck(name=Tch1);/判定是否選中boolean select

11、ed=this.sel.isChecked(name=Tch1);org.junit.Assert.assertEquals(false, selected);具體參見:formExampleTest.java - testCheckbox()6. html列表框操作技巧6.1判斷列表框的所有數據項是否和期望相同首先建立期望的數據項,如下所示:String expectSports=new String3;推薦精選expectSports0=羽毛球;expectSports1=乒乓球;expectSports2=籃球;再從當前網頁的列表框中讀取所有的數據項:String actualSport

12、s=this.sel.getSelectOptions(sport);利用junit4 獨有的數組判定函數進行比較org.junit.Assert.assertArrayEquals(下拉框出錯, expectProfessions, actualProfessions);注意:expectSports數組中元素的順序必須和網頁上的順序一致,否則出錯具體參見:formExampleTest.java - testListFrame ()6.2判斷列表框是否有數據被選中/判斷列表框是否有數據被選中org.junit.Assert.assertFalse(this.sel.isSomethingS

13、elected(name=sport);6.3模擬用戶選擇多個數據項,并判定模擬用戶選擇數據項有二種方式:this.sel.addSelection(name=sport, index=0);this.sel.addSelection(name=sport, label=乒乓球);建立期望的數據項,如下所示:String expectSports=new String2;expectSports0=羽毛球;expectSports1=乒乓球;判定期望結果與實際結果是否一致,有二種方式:第一種方式/讀取選中的數據項String selectValues = this.sel.getSelecte

14、dLabels(name=sport);org.junit.Assert.assertArrayEquals(列表框出錯, expectSports,selectValues);第二種方式/期望結果初始化String expectSports=new String2;expectSports0=1;expectSports1=2;/讀取選中的數據項String selectValues = this.sel.getSelectedValues(name=sport);org.junit.Assert.assertArrayEquals(列表框出錯,expectSports, selectVal

15、ues);推薦精選7. html單選按鈕操作技巧7.1判定是否有單選按鈕被選中/判定是否有單選項選中-第一種方法boolean selected=this.sel.isChecked(name=Tsex);org.junit.Assert.assertEquals(true, selected);/判定是否有單選項選中-第二種方法String selectedValue =this.sel.getValue(name=Tsex);org.junit.Assert.assertEquals(on, selectedValue);具體參見:formExampleTest.java - testRa

16、dio()7.2 模擬用戶選中一個數據項,并判定首先模擬用戶選中一個單選按鈕,并判定/模擬用戶選中單選項-女,并判定this.sel.check(name=Tsex value=女);boolean selected=this.sel.isChecked(name=Tsex value=女);org.junit.Assert.assertEquals(true, selected);具體參見:formExampleTest.java - testRadio()8. 驗證技巧8.1判斷頁面是否存在一個元素只需打開網頁,利用下列語句進行判定,比如驗證文本框是否存在/驗證文本框-姓名 是否存在org

17、.junit.Assert.assertTrue(this.sel.isElementPresent(name=Tname);具體參見:formExampleTest.java - testIsExist()8.2 處理js的Alert提示例:比如有一個文本框用來輸入年齡,現通過javascript的onBlur事件來檢查輸入的數據是否是數字,如果不是,用alert,顯示“請輸入數字內容”。1、利用focus()確定當前網頁焦點,輸入數據/找到文本框-年齡,此語句必不可少this.sel.focus(name=age);/ 對文本框賦值推薦精選this.sel.type(name=age, 漢

18、字233);2、將焦點轉移/將焦點跳轉到文本框-姓名時,利用onblue事件自動檢查年齡this.sel.focus(name=Tname);3、驗證是否出現alert,如果出現,抓住后處理if(this.sel.isAlertPresent()org.junit.Assert.assertEquals(請輸入數字內容, this.sel.getAlert();elseorg.junit.Assert.fail();具體參見:formExampleTest.java - testAlert() newWindowTest.java - testAlert()注意:getAlert()作用是返回

19、警告窗口內的警告內容,并且模擬用戶點擊”確定”。Alert函數只能處理一次,即不能出現兩次getAlert,否則第二次調用getAlert失敗8.3 處理js的confirm提示當selenium處理js的confirm()時,默認自動模擬選擇”確定”按鈕,如果用戶想自動模擬選擇”取消”按鈕,可使用chooseCancelOnNextConfirmation/如果不使用chooseCancelOnNextConfirmation語句,模擬用戶點擊確定,否則模擬用戶點擊取消/this.sel.chooseCancelOnNextConfirmation();this.sel.focus(name

20、=btnsm2);this.sel.click(name=btnsm2);/ 由于點擊取消,窗體彈出一個alert,所以這里進行判斷if (!this.sel.isAlertPresent() org.junit.Assert.assertEquals(表單例子,this.sel.getTitle(); else org.junit.Assert.assertEquals(你按了取消,那就是返回false, this.sel.getAlert();具體參見:newWindowTest.java - testConfirm()推薦精選8.4 處理js的prompt提示如果js中包含prompt(

21、),則可使用answerOnNextPrompt模擬用戶輸入this.sel.open(http:/localhost:8080/jspNews/NewWindow.html);/使用answerOnNextPrompt模擬用戶輸入this.sel.answerOnNextPrompt(北京);this.sel.focus(name=btnsm3);this.sel.click(name=btnsm3);/ 自動模擬點擊確定,窗體彈出一個alert,所以這里進行判斷if (this.sel.isAlertPresent() org.junit.Assert.assertEquals(歡迎您:北

22、京,this.sel.getAlert(); else org.junit.Assert.fail();具體參見:newWindowTest.java - testPromt()8.5 驗證html元素的屬性我們可以通過ID號、name或數組方式獲取html元素的屬性/ 驗證屬性|id1class|a1org.junit.Assert.assertEquals(a1, this.sel.getAttribute(id1class);/ 驗證屬性|name1class|a2org.junit.Assert.assertEquals(a2,this.sel.getAttribute(name1cl

23、ass);/ 以數組方式驗證屬性|document.links1class|a2org.junit.Assert.assertEquals(a2,this.sel.getAttribute(document.links1class);具體參見:AttributeTest.java - testAttribute ()9. 彈出窗體9.1判斷是否存在彈出窗體模擬用戶單擊button按鈕,觸發js function openWindow() var refmyPopWindow=window.open(./test_select_window_popup.html, myPopupWindowTi

24、tle, height=200,width=500,top=400,left=50); 彈出一個窗體JS中的open函數:推薦精選第一個參數:網址第二個參數:新網頁的名稱第三個參數:網頁的狀態,比如大小,界面等返回值:新窗體的引用測試是否彈出窗體代碼如下:this.sel.open(http:/localhost:8080/jspNews/test_select_window.html);/ 點擊按鈕,用js的window.open彈出一個窗體this.sel.click(popupPage);/ 等待5秒,彈出名為myPopupWindow的窗體this.sel.waitForPopUp(m

25、yPopupWindowTitle, 5000);/ 將彈出的窗體設置為當前窗體this.sel.selectWindow(myPopupWindowTitle);/ this.sel.selectWindow(彈出的窗體);org.junit.Assert.assertEquals(http:/localhost:8080/jspNews/test_select_window_popup.html,this.sel.getLocation();說明:selectWindow函數第一個參數:可以是窗體的名稱,比如myPopupWindowTitle;可以是窗體title,比如彈出的窗體; 具體

26、參見:popWindowTest.java - testIsExistPopWindow ()9.2測試關閉彈出的子窗體,并將子窗體的值傳給父窗體模擬用戶單擊button按鈕,觸發js的open(),打開子窗體。在子窗體的文本框內輸入數據,模擬用戶點擊關閉按鈕,將子窗體中文本框的值傳給父窗體this.sel.click(popupPage);/ 等待5秒,彈出名為myPopupWindow的窗體this.sel.waitForPopUp(myPopupWindowTitle, 5000);/ 將彈出的子窗體設置為當前窗體this.sel.selectWindow(彈出的窗體);/ 對子窗體文本

27、框賦值this.sel.type(name=txtchildname, 夏天);/點擊子窗體的關閉按鈕this.sel.click(id=btnClosePage);/將當前窗體設置為父窗體this.sel.selectWindow(主窗體);推薦精選/從父窗體的文本框讀取數據,準備驗證String textValue = this.sel.getValue(name=txtParentName);org.junit.Assert.assertEquals(夏天, textValue);具體參見:popWindowTest.java - testCloseChildPage()9.3子窗體上加

28、載一個新網頁本例通過超鏈接方式,在子窗體上重新加載一個新網頁,并驗證this.sel.open(http:/localhost:8080/jspNews/test_select_window.html);/ 點擊按鈕,用js的window.open彈出一個窗體this.sel.click(popupPage);/ 等待5秒,彈出名為myPopupWindow的窗體this.sel.waitForPopUp(myPopupWindowTitle, 5000);/ 將彈出的窗體設置為當前窗體this.sel.selectWindow(彈出的窗體);/通過超鏈接加載新的網頁this.sel.clic

29、k(link=加載一個新網頁);this.sel.waitForPageToLoad(30000);org.junit.Assert.assertEquals(重載窗體,this.sel.getTitle();具體參見:popWindowTest.java - testReloadChildPage ()10. html超鏈接操作技巧10.1 點擊超鏈接到新網頁/通過超鏈接加載新的網頁this.sel.click(link=加載一個新網頁);this.sel.waitForPageToLoad(30000);具體參見:JsTest.java - testJSPage ()10.2 包含JS的超

30、鏈接如下所示:link可通過下列代碼測試:/ 模擬用戶點擊超鏈接this.sel.click(link);org.junit.Assert.assertEquals(link clicked: foo, this.sel.getAlert();具體參見:JsTest.java - testJSPage ()推薦精選10.3包含三個alert()的超鏈接如下所示:link with multiple javascript calls利用getAlert()函數,分別進行驗證:/ 點擊帶JS的超鏈接,包含三個alertthis.sel.click(linkWithMultipleJavascriptStatements);org.junit.Assert.assertEquals(alert1, this.sel.getAlert();org.junit.Assert.assertEquals(alert2, this.sel.getAlert();org.junit.Assert.assertEquals(alert3, this.sel.getAlert();具體參見:J

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論