51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3658|回复: 10
打印 上一主题 下一主题

[求助] 如何根据复选框所在行的某列的名字决定是否需要选中

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-9-26 15:15:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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回放时总是选中第一行前面的复选框,这不是我所要的。
各位高手,帮忙看看,多谢!
急盼回复!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-9-26 15:39:50 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-9-26 16:01:33 | 只看该作者
呵呵,偶前段时间也做过这个类似滴东东,不过偶那个对像修似乎是个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
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-9-26 16:03:20 | 只看该作者
还有,page 上所有的check box的name应该都是不一样的吧?所以,,为了让QTP好识别,请先用正则表达式把name属性给优化一下~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-9-26 16:04:28 | 只看该作者
去看看table的帮助,里面有方法可以做这个!~~
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-9-26 16:05:50 | 只看该作者
若楼主当前表格没有翻页,只要直接名字就可以了。不过有翻页的话,个人觉得有点麻烦。
我今天正好做了一个类似的脚本,有点烦琐。楼主可以参考一下。
因为我现在测试的那个页面中有关列表都是一样的,因此我单独做了一个搜索单元格列表的脚本
搜索单元格列表的传入参数是表格中的列数(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   正常  ) 这一行
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-9-26 16:50:51 | 只看该作者
我在expert view中加入:object.GetRowWithCellText (无设备套餐3, [2], [StartFromRow]),
回放后提示:这句是非法的语法。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-9-26 16:55:00 | 只看该作者
倒,,,,你那object写的是什么呀?一般这个object指的是webtable,所以你要把它换成webtable的名字,,,还有,startfromrow是说你从第几行开始找好不好,是数值型呀,,,你还把它原样贴过来干嘛咧?或者你好好看一下qtp 关于GetRowWithCellText 方法的帮助吧,,写得很清楚的,很容易懂
如webtable("testtable").GetRowWithCellText (无设备套餐3, [2], [StartFromRow])
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2007-9-26 16:58:31 | 只看该作者
请问五百罗汉,不翻页如何实现?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-9-26 20:37:08 | 只看该作者
楼主先确认下你的WebCheckBox是否在WebTable中。
用Spy查看下"无设备套餐3"是个什么对象以及其父对象是否有WebTable,如果父对象不是WebTable那么楼上的这些方法就全失效了~这样的话你就把查看到的对象及其父对象层次截图贴上来吧。 若是WebTable,那么用6楼的思路就能搞定。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-9-27 09:27:32 | 只看该作者
'无设备套餐3'父对象是Web Table,具体请看附件,但是我这里不翻页,具体怎么实现呢?

先谢谢各位了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 05:48 , Processed in 0.074945 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表