51Testing软件测试论坛

标题: 如何根据复选框所在行的某列的名字决定是否需要选中 [打印本页]

作者: marygao929    时间: 2007-9-26 15:15
标题: 如何根据复选框所在行的某列的名字决定是否需要选中
Browser("NYBOSS系统登陆").Page("中广温州有线BOSS系统").Frame("tf_frame").WebCheckBox("list[@name='update']/SUB_PROD_").Set "ON"
执行到这步时,QTP选中的是第一行的复选框,但是我需要根据某列的名字决定是否勾选前面的复选框checkbox。

设备编号                 产品名称           价格       截止日期     结帐日期    购买状态
0000000000000147  全体包(660包半年)   110.00  2007-12-31  2007-09-25   正常
0000000000000147  无设备套餐1          200.00  2007-12-31  2007-09-25   正常  
0000000000000147  无设备套餐3          200.00  2007-12-31  2007-09-25   正常  

如上述的几行选项,每行前面都有一个复选框,如果我想勾选‘无设备套餐3’所在行的复选框,如何实现?
因为QTP回放时总是选中第一行前面的复选框,这不是我所要的。
各位高手,帮忙看看,多谢!
急盼回复!
作者: 木卫十二    时间: 2007-9-26 15:39
http://bbs.51testing.com/redirec ... amp;goto=nextoldset
作者: 窗台上的阳光    时间: 2007-9-26 16:01
呵呵,偶前段时间也做过这个类似滴东东,不过偶那个对像修似乎是个webtabl,而不是frame,偶是那么做的,嘿嘿

偶是这么做滴:
1、首先要得到那个复选框所在的webtable的行号,也就是第几行, 所以用以下的方法:
object.GetRowWithCellText (Text, [Column], [StartFromRow])
这个方法是返回webtable里第column列text所在的行号
2、然后就是使那个checkbox获得焦点啦,,,用以下的方法:
Browser("NYBOSS系统登陆").Page("中广温州有线BOSS系统").WebCheckBox("list[@name='update']/SUB_PROD_").SetTOProperty("index",上面取得的行号-1)
Browser("NYBOSS系统登陆").Page("中广温州有线BOSS系统").WebCheckBox("list[@name='update']/SUB_PROD_").set "on"
因为index是从0开始的,所以要减1
作者: 窗台上的阳光    时间: 2007-9-26 16:03
还有,page 上所有的check box的name应该都是不一样的吧?所以,,为了让QTP好识别,请先用正则表达式把name属性给优化一下~
作者: 看雪时节    时间: 2007-9-26 16:04
去看看table的帮助,里面有方法可以做这个!~~
作者: 五百螺汉    时间: 2007-9-26 16:05
若楼主当前表格没有翻页,只要直接名字就可以了。不过有翻页的话,个人觉得有点麻烦。
我今天正好做了一个类似的脚本,有点烦琐。楼主可以参考一下。
因为我现在测试的那个页面中有关列表都是一样的,因此我单独做了一个搜索单元格列表的脚本
搜索单元格列表的传入参数是表格中的列数(iColumn)和表格中的单元格名称(iCellname)
其他脚本调用这个脚本的时候,只要传入表格中的列数和表格中的单元格名称就能定位所
需要的行。
步骤
1:先识别出当前表格
2:对当前表格有没有翻页进行判断,具体可以做一个输出值检查点,将值赋给一个变量
3:判断当前表格存在不存在,不存在则退出
4:判断当前表格是否小于2行(因为数据是从第2行开始才是记录数据的),不存在则退出
5:下面开始逐页逐行做循环判断,判断当前获取到的值是否与传入的值一致。

下面是代码

Browser("KOA知识办公自动化系统").Page("KOA知识办公自动化系统").Frame("rightFrm").Output CheckPoint("共 21 条记录 当前页面是第 1 页 共_2")
iPages1 = environment("iPages1")
If isnull(iPages1)= 0 Then
        exitaction(0)
   
End If


Dim iWebtable,iLink,RC
Set iWebtable = Browser("KOA知识办公自动化系统").Page("KOA知识办公自动化系统").Frame("rightFrm").WebTable("标题")
Set iLink = Browser("KOA知识办公自动化系统").Page("KOA知识办公自动化系统").Frame("rightFrm").WebElement ("下一页")

If iWebtable.exist(1)=0 Then
    exitaction(0)
End If

RC = iWebtable.rowcount
If RC<2 Then
    Exitaction(0)
End If

Dim eCellname,eColumn,pCellname,i,j
eCellname= parameter("iCellname")
eColumn= parameter("iColumn")

i =1
Do while i <= iPages1
           Set iWebtable = Browser("KOA知识办公自动化系统").Page("KOA知识办公自动化系统").Frame("rightFrm").WebTable("标题")
       Set iLink = Browser("KOA知识办公自动化系统").Page("KOA知识办公自动化系统").Frame("rightFrm").WebElement ("下一页")
          j=2
                 
                  While j< RC
                              pCellname =iWebtable.Getcelldata(j,eColumn)
                            If ltrim(pCellname) = eCellname Then
                   exitaction(-1)

                  End If
                           j=j+1
                  Wend

          If (iLink.exist(1)) Then
                          iLink.Click
                          else
              exitaction(0)
                  End If

        i= i+1
Loop



其中传入参数为:iCellname和iColumn

其他脚本调用这个脚本时,只需要传入iCellname和iColumn的值,就能够准确定位
比如传入:无设备套餐3 和3 ,就定位到(0000000000000147  无设备套餐3          200.00  2007-12-31  2007-09-25   正常  ) 这一行
作者: marygao929    时间: 2007-9-26 16:50
我在expert view中加入:object.GetRowWithCellText (无设备套餐3, [2], [StartFromRow]),
回放后提示:这句是非法的语法。
作者: 窗台上的阳光    时间: 2007-9-26 16:55
倒,,,,你那object写的是什么呀?一般这个object指的是webtable,所以你要把它换成webtable的名字,,,还有,startfromrow是说你从第几行开始找好不好,是数值型呀,,,你还把它原样贴过来干嘛咧?或者你好好看一下qtp 关于GetRowWithCellText 方法的帮助吧,,写得很清楚的,很容易懂
如webtable("testtable").GetRowWithCellText (无设备套餐3, [2], [StartFromRow])
作者: marygao929    时间: 2007-9-26 16:58
请问五百罗汉,不翻页如何实现?
作者: hsjzfling    时间: 2007-9-26 20:37
楼主先确认下你的WebCheckBox是否在WebTable中。
用Spy查看下"无设备套餐3"是个什么对象以及其父对象是否有WebTable,如果父对象不是WebTable那么楼上的这些方法就全失效了~这样的话你就把查看到的对象及其父对象层次截图贴上来吧。 若是WebTable,那么用6楼的思路就能搞定。
作者: marygao929    时间: 2007-9-27 09:27
'无设备套餐3'父对象是Web Table,具体请看附件,但是我这里不翻页,具体怎么实现呢?

先谢谢各位了!




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