Selenium RC使用技巧v夏辉_第1页
Selenium RC使用技巧v夏辉_第2页
Selenium RC使用技巧v夏辉_第3页
Selenium RC使用技巧v夏辉_第4页
Selenium RC使用技巧v夏辉_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Selenium RC使用技巧版本:V1.0日期:2008-8-5作者:夏辉()本文档所有例子,请参照”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” ); 5、以link方

2、式定位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.sel.open(htt

3、p:/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.jsp),如果用户输入正确的用户名

4、和密码,则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.selectFrame(index=1);/

5、判断该网页的标题是否是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 模拟输入文本,并判定/对文本框赋值this.sel.ty

6、pe(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;expectProfessions0=计算机;expectProfess

7、ions1=文学;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.Assert.assertEquals(文学,

9、 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.check(name=Tch1);/判定是否选中bool

10、ean 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 selected=this.sel.isChecked(na

11、me=Tch1);org.junit.Assert.assertEquals(false, selected);具体参见:formExampleTest.java - testCheckbox()6. html列表框操作技巧6.1判断列表框的所有数据项是否和期望相同首先建立期望的数据项,如下所示:String expectSports=new String3;expectSports0=羽毛球;expectSports1=乒乓球;expectSports2=篮球;再从当前网页的列表框中读取所有的数据项:String actualSports=this.sel.getSelectOptions(

12、sport);利用junit4 独有的数组判定函数进行比较org.junit.Assert.assertArrayEquals(下拉框出错, expectProfessions, actualProfessions);注意:expectSports数组中元素的顺序必须和网页上的顺序一致,否则出错具体参见:formExampleTest.java - testListFrame ()6.2判断列表框是否有数据被选中/判断列表框是否有数据被选中org.junit.Assert.assertFalse(this.sel.isSomethingSelected(name=sport);6.3模拟用户选

13、择多个数据项,并判定模拟用户选择数据项有二种方式:this.sel.addSelection(name=sport, index=0);this.sel.addSelection(name=sport, label=乒乓球);建立期望的数据项,如下所示:String expectSports=new String2;expectSports0=羽毛球;expectSports1=乒乓球;判定期望结果与实际结果是否一致,有二种方式:第一种方式/读取选中的数据项String selectValues = this.sel.getSelectedLabels(name=sport);org.juni

14、t.Assert.assertArrayEquals(列表框出错, expectSports,selectValues);第二种方式/期望结果初始化String expectSports=new String2;expectSports0=1;expectSports1=2;/读取选中的数据项String selectValues = this.sel.getSelectedValues(name=sport);org.junit.Assert.assertArrayEquals(列表框出错,expectSports, selectValues);7. html单选按钮操作技巧7.1判定是否有

15、单选按钮被选中/判定是否有单选项选中-第一种方法boolean selected=this.sel.isChecked(name=Tsex);org.junit.Assert.assertEquals(true, selected);/判定是否有单选项选中-第二种方法String selectedValue =this.sel.getValue(name=Tsex);rt.assertEquals(on, selectedValue);具体参见:formExampleTest.java - testRadio()7.2 模拟用户选中一个数据项,并判定首先模拟用户选中一个单选按钮,并判定/模拟用

16、户选中单选项-女,并判定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.junit.Assert.assertTrue(this.sel.isElementPre

17、sent(name=Tname);具体参见:formExampleTest.java - testIsExist()8.2 处理js的Alert提示例:比如有一个文本框用来输入年龄,现通过javascript的onBlur事件来检查输入的数据是否是数字,如果不是,用alert,显示“请输入数字内容”。1、利用focus()确定当前网页焦点,输入数据/找到文本框-年龄,此语句必不可少this.sel.focus(name=age);/ 对文本框赋值this.sel.type(name=age, 汉字233);2、将焦点转移/将焦点跳转到文本框-姓名时,利用onblue事件自动检查年龄this.s

18、el.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()作用是返回警告窗口内的警告内容,并且模拟用户点击”确定”。Alert函数只能处理一次,即不能出现两次getAl

19、ert,否则第二次调用getAlert失败8.3 处理js的confirm提示当selenium处理js的confirm()时,默认自动模拟选择”确定”按钮,如果用户想自动模拟选择”取消”按钮,可使用chooseCancelOnNextConfirmation/如果不使用chooseCancelOnNextConfirmation语句,模拟用户点击确定,否则模拟用户点击取消/this.sel.chooseCancelOnNextConfirmation();this.sel.focus(name=btnsm2);this.sel.click(name=btnsm2);/ 由于点击取消,窗体弹出

20、一个alert,所以这里进行判断if (!this.sel.isAlertPresent() org.junit.Assert.assertEquals(表单例子,this.sel.getTitle(); else .assertEquals(你按了取消,那就是返回false, this.sel.getAlert();具体参见:newWindowTest.java - testConfirm()8.4 处理js的prompt提示如果js中包含prompt(),则可使用answerOnNextPrompt模拟用户输入this.sel.open(http:/localhost:8080/jspNe

21、ws/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(欢迎您:北京,this.sel.getAlert(); else org.junit.Assert.fail();具体参见:newWindowTest

22、.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(name1class);/ 以数组方式验证属性|document.links1class|a2org.junit.Assert.assertEquals(

23、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, myPopupWindowTitle, height=200,width=500,top=400,left=50); 弹出一个窗体JS中的open函数:第一个参数:网址第

24、二个参数:新网页的名称第三个参数:网页的状态,比如大小,界面等返回值:新窗体的引用测试是否弹出窗体代码如下: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(myPopupWindo

25、wTitle);/ this.sel.selectWindow(弹出的窗体);org.junit.Assert.assertEquals(http:/localhost:8080/jspNews/test_select_window_popup.html,this.sel.getLocation();说明:selectWindow函数第一个参数:可以是窗体的名称,比如myPopupWindowTitle;可以是窗体title,比如弹出的窗体; 具体参见:popWindowTest.java - testIsExistPopWindow ()9.2测试关闭弹出的子窗体,并将子窗体的值传给父窗体模

26、拟用户单击button按钮,触发js的open(),打开子窗体。在子窗体的文本框内输入数据,模拟用户点击关闭按钮,将子窗体中文本框的值传给父窗体this.sel.click(popupPage);/ 等待5秒,弹出名为myPopupWindow的窗体this.sel.waitForPopUp(myPopupWindowTitle, 5000);/ 将弹出的子窗体设置为当前窗体this.sel.selectWindow(弹出的窗体);/ 对子窗体文本框赋值this.sel.type(name=txtchildname, 夏天);/点击子窗体的关闭按钮this.sel.click(id=btnCl

27、osePage);/将当前窗体设置为父窗体this.sel.selectWindow(主窗体);/从父窗体的文本框读取数据,准备验证String textValue = this.sel.getValue(name=txtParentName);org.junit.Assert.assertEquals(夏天, textValue);具体参见:popWindowTest.java - testCloseChildPage()9.3子窗体上加载一个新网页本例通过超链接方式,在子窗体上重新加载一个新网页,并验证this.sel.open(http:/localhost:8080/jspNews/t

28、est_select_window.html);/ 点击按钮,用js的window.open弹出一个窗体this.sel.click(popupPage);/ 等待5秒,弹出名为myPopupWindow的窗体this.sel.waitForPopUp(myPopupWindowTitle, 5000);/ 将弹出的窗体设置为当前窗体this.sel.selectWindow(弹出的窗体);/通过超链接加载新的网页this.sel.click(link=加载一个新网页);this.sel.waitForPageToLoad(30000);org.junit.Assert.assertEqual

29、s(重载窗体,this.sel.getTitle();具体参见:popWindowTest.java - testReloadChildPage ()10. html超链接操作技巧10.1 点击超链接到新网页/通过超链接加载新的网页this.sel.click(link=加载一个新网页);this.sel.waitForPageToLoad(30000);具体参见:JsTest.java - testJSPage ()10.2 包含JS的超链接如下所示:link可通过下列代码测试:/ 模拟用户点击超链接this.sel.click(link);org.junit.Assert.assertEq

30、uals(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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论