51Testing软件测试论坛

标题: 曲线救国,使用另类方法定位随机生成的唯一标识的Web元素 [打印本页]

作者: netlrs    时间: 2006-5-19 13:36
标题: 曲线救国,使用另类方法定位随机生成的唯一标识的Web元素
一、定位随机生成的唯一标识的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实现类似操作。
作者: netlrs    时间: 2006-5-19 13:37
标题: 如果大家有更好的方法请指教!!!
如果大家有更好的方法请指教!!!
作者: Hunter    时间: 2006-5-19 13:42
和楼上有同样问题,我一直采用方法2,没有更好的方法!
作者: netlrs    时间: 2006-5-22 11:08
标题: 有没有更好的方法?
有没有更好的方法?
作者: bluelight    时间: 2006-5-22 14:47
en,我也是这样做的。

不过还有比这个更加需要曲线救国的情况
就是如果每个cell里面都是图片。。。。。。而且有可能是一样的图片,怎么办。。。。。。。
我想到的办法是:source + 像素 定位

不知道大家有没有更好的方法




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2