|
一、定位随机生成的唯一标识的Web元素
如果你有如下html代码:
......
<table>
<tr>
<td><input value="69d23" type="radio" name="ID" checked>aaaa</td>
</tr>
<tr>
<td><input value="69d27" type="radio" name="ID">bbbb</td>
</tr>
<tr>
<td><input value="69d26" type="radio" name="ID">cccc</td>
</tr>
</table>
......
这是一个radio组,每个radio的名称相同,只有value不同但这个value又是在添加数据时随机产生的并且又是按照value值排的序。这样当你的测试用例是,先添加一个aaaa 而后又将aaaa删除那该如何写测试脚本呢?
大家的习惯认为是只要记住选择的是第几个radio不就ok了,但大家不要忘了我前面说了这个radio的value是随机产生的,并且是按这个value排序的,换句话说也就是你填的虽然是aaaa但它不一定出现在那行上。这样测试脚本该如何写呢?
我考虑这个问题大体可有三种解决方法:
1、向LoadRunner中一样使用关联方式取得aaaa的radio的value值。
2、使用html元素的属性定位aaaa的radio。
3、在数据库服务器中查询aaaa的相应的ID来操作。
1、向LoadRunner中一样使用关联方式取得aaaa的radio的value值。
查找了QTP手册和帮助文档未能找到此类方法。如果能找到此类方法这个方案应该是最好的。如果有类似方法请及时提醒我。
2、使用html元素的属性定位aaaa的radio。
由于类似这些信息基本上都是放在一个table中,所以可以使用 WebTable("xxx").GetCellData(col,row) 命令取到表格中的所有文字内容。当匹配到取得的文字是aaaa时,记住当前的行号使用 WebRadioGroup("xxx").Select “#xxx” 命令选择一个radio,这样就可以了。
代码如下:
rowCount = Browser("xxx ").Page("xxx ").Frame("main").WebTable("地区").RowCount
For counter = 1 To rowCount
text = Browser("xxx").Page("xxx").Frame("main").WebTable("地区").GetCellData(counter,1)
If (text = "aaaa") Then
counter = counter - 1
selectNO = "#" & counter
Browser("xxx").Page("xxx").Frame("main").WebRadioGroup("ID").Select selectNO
Exit For
End If
Next
这个方法虽然可以实现需求但绕了一大圈。
3、在数据库服务器中查询aaaa的相应的ID来操作。
这个方法的主要思想是使用aaaa在数据库服务器的相应表中查找它的ID。然后使用 WebRadioGroup("xxx").Select “xxx” 命令选中相应得radio。但这个方法也不是很好因为你需要在测试脚本中添加访问数据库的代码(尤其我们测试的程序更麻烦,因为我们的代码将aaaa、bbbb、cccc的所有信息生成了一个xml文件后存在了一个字段中,也就是说我们取得数据后还要分析这个xml文档)。
宗上所述我认为目前我建议使用方法2实现类似操作。 |
|