51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: kangaroo
打印 上一主题 下一主题

[原创] 如何让QTP在大量列表中勾选出需要的数据?

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2007-8-31 18:00:33 | 只看该作者
天呐!这么长的代码!!我有心理阴影!!!
谢谢yabest如此慷慨。
今晚啥也不用吃了,直接啃代码了
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-8-31 23:42:17 | 只看该作者
原帖由 kangaroo 于 2007-8-31 18:00 发表
天呐!这么长的代码!!我有心理阴影!!!
谢谢yabest如此慷慨。
今晚啥也不用吃了,直接啃代码了


晕,你没看大部分是注释和使用说明啊,代码其实没多少!
而且是通用函数,只写一次的。所以要写的完善一点,使用起来就很爽啦!偷懒写的不好的话,使用起来就痛苦!
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2007-9-1 15:15:38 | 只看该作者

回复 #22 yabest 的帖子

yabest,真的是高手
回复 支持 反对

使用道具 举报

该用户从未签到

24#
 楼主| 发表于 2007-9-3 14:16:31 | 只看该作者

回复 #22 yabest 的帖子

对我这种才自学一个月,只会写三行代码的人来说…………
偶像!!我要向你学习!
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2007-9-6 15:40:50 | 只看该作者
佩服佩服。。。
请教请教。。。
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2007-9-6 17:06:20 | 只看该作者
dim obj_desc
set obj_desc = Description.Create
Obj_desc("html tag").value = "INPUT"
Obj_desc("type").value = "checkbox"
dim allcheckbox,onecheckbox
set allcheckbox = Browser("Browser").Page("Page").ChildObjects(obj_desc)
for each onecheckbox in allcheckbox
  onecheckbox.set "ON"
next

我在http://blog.csdn.net/black_sam/archive/2007/09/05/1772656.aspx里写了一篇关于descriptive programming的

[ 本帖最后由 black.sam 于 2007-9-6 17:07 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2007-9-10 12:22:21 | 只看该作者
原帖由 black.sam 于 2007-9-6 17:06 发表
dim obj_desc
set obj_desc = Description.Create
Obj_desc("html tag").value = "INPUT"
Obj_desc("type").value = "checkbox"
dim allcheckbox,onecheckbox
set allcheckbox = Browser("Browser").Page( ...


谢谢black.sam的分享。
对你的脚本我有些地方看不明白。我先解释一下我对你脚本的理解,看我说的对不对吧
第一二行是定义了一个object:obj_desc即我们要用的check box(第一次看到Description.Create理解可能有偏差);
第三四行是为obj_desc的两个属性heml tag和type分别赋值;
第五六行定义变量allcheckbox为obj_desc的所有子对象集;
第七八九行为一个for each-next循环,在allcheckbox定义之内的onecheckbox都会执行第八行set "ON"的命令,即在对应check box里打勾,不断循环、打勾,直到循环结束,所有目标项都被选择了。程序结束

不知是不是你程序没写完全,我没明白
1.为什么没有对onecheckbox赋值?难道它只是充当一个指针的作用?(偶没编程经验)
2.从哪个变量来控制/输入我要选出的对象?莫非是对html tag这个属性进行参数化?那循环时Obj_desc("html tag").value = "INPUT"只运行过一遍,如何保证所有预定目标项都被选择了?
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2007-9-11 11:37:42 | 只看该作者
onecheckbox是你要选择的checkbox,通过for each next,从allcheckbox中查找,如果存在你要选择的onecheckbox就set "ON"
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2007-9-11 12:16:17 | 只看该作者
sdlkfj6
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2007-9-11 12:16:37 | 只看该作者
原来这么麻烦啊
回复 支持 反对

使用道具 举报

该用户从未签到

31#
 楼主| 发表于 2007-9-11 13:36:27 | 只看该作者
原帖由 wlcking 于 2007-9-11 11:37 发表
onecheckbox是你要选择的checkbox,通过for each next,从allcheckbox中查找,如果存在你要选择的onecheckbox就set "ON"


如果要勾选出多个,如何对上述脚本参数化?如果onecheckbox就是要选择的checkbox,那是否只要再加一个对onecheckbox的参数化赋值,然后在循环内加一句 DataTable.SetCurrentRow(tb_i+1)就可以把所有数据都运行一遍?还是onecheckbox本身就是个datatable,for each-next循环会自动运行下一行数据?  迷惑中
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2007-9-11 14:37:59 | 只看该作者
要勾选多个就多用几次for each next,对onecheckbox参数话就行了,for each next就是在一个集合里查找值,查找到了就执行for each next下的语句
回复 支持 反对

使用道具 举报

该用户从未签到

33#
发表于 2007-9-11 15:01:41 | 只看该作者
1:首先在OR里添加Table。
2:利用childItem(,“WebCheckBox”,0).set “On”
   其中还要用到webTable的RowCount、GetCellData方法
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2007-9-11 15:16:01 | 只看该作者
真是受益匪浅,仔细看看
回复 支持 反对

使用道具 举报

该用户从未签到

35#
发表于 2007-9-21 10:15:04 | 只看该作者
好好研究下,好东西
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2007-9-21 12:53:14 | 只看该作者
不错  好方法 ,  我是直接查看 checkbox的命名方式,然后寻找checkbox,再进行设置,不过方法不通用
回复 支持 反对

使用道具 举报

该用户从未签到

37#
发表于 2007-10-9 16:05:24 | 只看该作者
哈哈,看来得好好学学VB的语法了
回复 支持 反对

使用道具 举报

该用户从未签到

38#
发表于 2007-10-9 16:29:47 | 只看该作者
GetRowWithCellText这个函数能根据你后面的文字内容返回当前在table中的Row的值
然后根据row的值用WebCheckBox("index:=&Row&").Set "ON"
回复 支持 反对

使用道具 举报

该用户从未签到

39#
发表于 2008-8-30 17:54:21 | 只看该作者
sdlkfj6
回复 支持 反对

使用道具 举报

该用户从未签到

40#
发表于 2008-11-4 17:17:03 | 只看该作者

回复 20# 的帖子

好脚本,收藏了~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 21:30 , Processed in 0.077443 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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