第五个示例要求如下:
WebList & WebRadioGroup
前提条件:用户已经登录51testing网站并进入“个人中心”,然后点击“论坛个性化设定”链接,进入下面的页面。
详细要求:
1. 【界面风格】:选择<discuz6>,再重新选回<使用默认>
2. 【每页主题数】:选择“每页30个主题”
【每页贴数】:选择“每页15贴”
【签名显示设置】:选择“显示签名”
【头像显示设置】:选择“不显示头像”
3. 【时差设定】:选择<(GMT +08:00) Beijing, Hong Kong, Perth, Singapore, Taipe>,然后随机选择一个,再做验证
最后的成品代码如下:
with Browser("51Testing软件测试论坛").Page("51Testing软件测试论坛") 'WebList的使用:所见即所得 DataTable.Value("界面风格",Global) = "discuz6" '使用了DataTable tValue1 = DataTable.Value("界面风格",Global) .WebList("界面风格").Select tValue1 'QTP封装好的方法 'for check our result1 check1 =Trim( .WebList("界面风格").GetROProperty("selection")) DataTable.Value("界面风格",Global) = "使用默认" tValue2 = DataTable.Value("界面风格",Global) .WebList("界面风格").Select tValue2 'for check our result2 check2 =Trim( .WebList("界面风格").GetROProperty("selection")) If check1 = "discuz6" and check2 = "使用默认" Then reporter.ReportEvent micPass,"Step1:weblist","Passed" else reporter.ReportEvent micFail,"Step1","Failed" End If 'WebRadioGroup的使用 .WebRadioGroup("每页主题数").Select "30" '注解1 .WebRadioGroup("每页贴数").Select "15" .WebRadioGroup("签名显示设置").Select "1" .WebRadioGroup("头像显示设置").Select "0" reporter.ReportEvent micDone, "step 2 : webradiogroup","done" '从很多个选项中选择一个 dim expectRes expectRes = "(GMT +08:00) Beijing, Hong Kong, Perth, Singapore, Taipei" .WebList("时差设定").Object.selectedIndex = "27" '注解2 actualRes = .WebList("时差设定").GetROProperty("selection") If actualRes = expectRes Then reporter.ReportEvent micPass,"Step3","Passed" else reporter.ReportEvent micFail,"Step3","Failed" End If '随机选择 itemCount = .WebList("时差设定").GetROProperty("items count") '注解3 tValue3 = RandomNumber(0,itemCount - 1) 'QTP保留的随机方法 .WebList("时差设定").Object.selectedIndex = tValue3 '验证 selectedRes = .WebList("时差设定").GetROProperty("selection") msgbox selectedRes end with
解释几点:
1. 注解1 这里看着奇怪,为什么有时候是选项名,有时候是序号呢?一般情况下WebList对象的选项是所见即说得的,就是说写脚本的时候,WebList的参数直接填下拉框里的内容就可以了。但是WebRadioGroup就不是了。它的参数究竟要填内容还是序号呢?这个我们就要依靠Spy这个工具了。
【每页主题数】 【签名显示设置】
仔细观察all items一项,我们就可以判断出,它的值就是对应所有选项了。所以我们选择每页主题数为30时,填的参数是“30”,而签名显示设置的参数是0。
2. 注解2 使用自身接口+Index的组合一样可以对WebList对象操作,这样不必把Item的值写死
3. 注解3 使用运行时方法可以获取WebList总共有多少个选项,怎么知道是哪个属性?再用Spy来看看吧:
可见”items count“属性记录了WebList下有几个选项
第六个示例要求如下:
WebTable
前提条件:登陆51testing网站,点击“我的个人空间”链接,进去后点“空间管理”,点“日志”的私人箱,进入如下界面:
详细要求:
1. 计算当前WebTable对象的行与列
2. 搜索以下3个文章:
(1)测试3
(2)测试2
(3)测试1
找到文章后,勾选它们左侧的勾选框,将“测试3”这篇文章的发布时间写入测试报告
最后的成品代码如下:
With Browser("个人空间管理").Page("个人空间管理") tRow = .WebTable("标题").RowCount For cRow = 0 to tRow-1 cellData = .WebTable("标题").GetCellData(cRow+1,2) '注解1 'msgbox cellData For i = 1 to 3 Select Case i Case 1 search1 = "测试1" return = instr(cellData,search1) '注解2 If return <> 0 Then Set oWebCheckBox = .WebTable("标题").ChildItem(cRow+1,1,"WebCheckBox",0) '注解3 oWebCheckBox.set "on" Set oWebCheckBox = nothing Exit for End If Case 2 search1 = "测试2" return = instr(cellData,search1) If return <> 0 Then Set oWebCheckBox = .WebTable("标题").ChildItem(cRow+1,1,"WebCheckBox",0) oWebCheckBox.set "on" Set oWebCheckBox = nothing Exit for End If Case 3 search1 = "测试3" return = instr(cellData,search1) If return <> 0 Then Set oWebCheckBox = .WebTable("标题").ChildItem(cRow+1,1,"WebCheckBox",0) oWebCheckBox.set "on" Set oWebCheckBox = nothing tDate = .WebTable("标题").GetCellData(cRow+1,3) reporter.ReportEvent micPass,"date","""测试3"" 这篇文章发表于:<"&tDate&">" '注意把变量值嵌入文本的语法 Exit for End If End Select Next Next End With
解释几点:
1. 注解1 cellData方法是WebTable对象的一个重点方法,作用是获取指定单元格(行,列)的值。
语法是:Object<WebTable>.GetCellData(Row,Column)
Row是必填项,表格的行号;Column也是必填项,表格的列号。
至于这里的列号是多少怎么判断,你用这个方法获取它,然后msgbox一下就知道了。
2. 注解2 Instr作用:将search字符串与cellData中的某个下标位置(默认是1)开始一一匹配,匹配到1个就返回1,匹配到2个就返回2...
3. 注解3 ChildItem方法是WebTable对象的另一个重点方法。它可以获取WebTable里的某个子对象。
语法是:Object<WebTable>.ChildItem(Row,Column,MicClass,Index)
其中MicClass是必填项,对象控件的类名,如List,WebButton,WebEdit等等,要虚拟成什么对象就填什么。Index填0就可以了。