51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5848|回复: 15
打印 上一主题 下一主题

[原创] QTP选择多个复选框

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-4-13 17:05:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
就拿“中国竞彩网-足球-过关奖金页面”来说,那么多复选框,怎么才能点到我想选的?而且录脚本的时候根本记录不到Webtable。拜请高手指点!如果有些代码给我研究也好,感激不尽!!!
按位置或按数量勾选复选框已经有高手指点过了,可是碰到内容不断更新变化的网页,这种方法就不行了,烦请坛内高手不吝赐教。(如果举例说明更加感谢!)

问题已解决

解决方法:脚本先抓取Webelement如“周二001”的属性,然后做个判断与我的预期值做比较,再根据判断结果来勾复选框。

[ 本帖最后由 tommy_sun 于 2010-4-21 10:34 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-4-14 11:36:10 | 只看该作者
录制不到WebTable不等于识别不出WebTable,可以在对象库中自己添加进去

或者用描述性编程在脚本中直接描述出来

下面是一个使用DP的例子(把页面中所有WebCheckBox都勾选上):
Dim oWebChkDesc
Set oWebChkDesc = Description.Create
oWebChkDesc("micclass").value = "WebCheckBox"
oWebChkDesc("html tag").Value = "INPUT"

' 获取所有匹配描述的对象
Dim allCheck, oCheckBox
Set allCheck = Browser("Web Tours").Page("Web Tours").ChildObjects(oWebChkDesc)
For i = 0 to allCheck.Count - 1
       Set oCheckBox = allCheck(i)
       oCheckBox.Set "ON"
Next
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-4-14 13:29:26 | 只看该作者
LS已经给出勾选所有复选框的方法来了。如果你要勾选特定的几个,可以在LS代码的循环里做判断去进一步区分。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-4-14 15:29:49 | 只看该作者

回复 2# 的帖子

哈哈,真好,太感谢了!
我先研究下代码。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-4-14 16:17:33 | 只看该作者

回复 2# 的帖子

我试过了,很好。
但是,这样勾复选框是按数目勾选的或者说按位置勾选的,那如果复选框的位置发生变化,勾选的结果会和我预期的不一样。我还是拿“中国竞彩网-足球-过关奖金页面”做的实验,查看了几个Checkbox的属性,它们的区别只是位置上的区别,第一行的第一个就是m001001第二个m001002,第二行第一个是m002001....我打算用前面的赛事编号(如:周四001)来确定勾选哪些复选框,再请高手指点一下。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-4-14 21:51:13 | 只看该作者
看看每个WebCheckBox的name属性是否有区别
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-4-15 09:03:22 | 只看该作者

回复 6# 的帖子

name属性都一样,都是空。现在的第一行赛事编号已经变了,可是复选框没变,第一行第一个复选框还是m001001,我再按位置去勾的话,那肯定是错的。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-4-15 09:09:47 | 只看该作者
从DOM入手看看吧,研究一下赛事编号与webcheckbox之间的结构关系
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-4-15 09:15:34 | 只看该作者
看了一下竞彩网,那个是一个WebTable对象,包含了WebCheckbox,所以其实只要通过WebTable访问单元格就可以了

可以自己在对象库中把WebTable对象加进去
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-4-15 11:44:35 | 只看该作者

回复 9# 的帖子

谢谢!
上午一直忙,有时间了我试下。再次感谢你多次指点!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-4-16 16:49:07 | 只看该作者
Set NewObject = Description.Create
        NewObject("micclass").value ="WebCheckBox"
        NewObject("html tag").value="INPUT"
        NewObject("type").value = "checkbox"

        Set NewObjects = Browser("计算器中国竞彩网").Page("计算器中国竞彩网").ChildObjects(NewObject)
        Numbers = NewObjects.Count
        
        For i = 0 to NewObjects.count - 1
                NewObjects(i).Set "ON"
        Next


这样就可以了,但是最多可以让你选择6组,所以你要判断一下..
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2010-4-20 08:53:04 | 只看该作者

回复 11# 的帖子

谢谢!
但其实这个和 TIB 2楼提供的方法是一样的,那么一旦在中间删除一行或增加一行,单元格的数量就会有变化,想要选中我的预期值就得修改脚本。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-4-20 09:30:31 | 只看该作者
LZ,页面太复杂了,不如搞一个简单的.回头你再拿复杂的练手
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2010-4-21 10:32:36 | 只看该作者

问题已解决

谢谢各位!
解决方法:脚本先抓取Webelement如“周二001”的属性,然后做个判断与我的预期值做比较,再根据判断结果来勾复选框。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2010-4-21 23:53:33 | 只看该作者
Set allCheck = Browser("Web Tours").Page("Web Tours").ChildObjects(oWebChkDesc) ??
描述性编程具有后续强迫性,前面采用描述性编程,后面也要用,上面这句应该会报错,应该采用描述性编程来写.
Set allCheck = Browser("title:=Web Tours").Page("title:=Web Tours").ChildObjects(oWebChkDesc)
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-4-22 09:48:59 | 只看该作者
原帖由 白发三千 于 2010-4-21 23:53 发表
Set allCheck = Browser("Web Tours").Page("Web Tours").ChildObjects(oWebChkDesc) ??
描述性编程具有后续强迫性,前面采用描述性编程,后面也要用,上面这句应该会报错,应该采用描述性编程来写.
Set allCheck = Br ...


不对吧,请试验证过了再说
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-9 06:29 , Processed in 0.085441 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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