51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5484|回复: 20
打印 上一主题 下一主题

[原创] 动态WebRadioGroup的选择方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-4-29 07:59:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如下图,我们有时会遇到下图中的列表,表中的列表项的个数是动态变化的,排列顺序也是动态变化的。操作的方法是
点击所要选择的项目的前面的单选按钮,然后才能对这一项进行操作——删除、修改等等


在使用Object spy检查webradiogroup的属性时发现一个有趣的现象,ojbect spy只返回被选中的那个radio的属性、abs_x,abs_y等等
,即使你spy未被选中的按钮也如此!不过下面的代码利用了这个现象。

另外radio的items count属性可以返回当前radio 的个数。

代码的思想是这样,首先根据找到要操作的选项,在本例中,假设是“branch3_1”这一项,因为它的排列顺序是不固定,所以我们不能
通过它目前图中的位置来找到它所对应的单选按钮,而且因为html语言中也没有给出当前第几行的属性,所以在单选按钮和“branch3_1”
之间只有一个屏幕纵坐标相同或相差一个固定值的关系,前面说过来object spy 只返回被选中的那个radio的属性,因此我们可以首先
for 循环,然后select每一个单选按钮,判断当前单选按钮的abs_y是否与“branch3_1”的abs_y相等或者相差一个固定值,如果“是”,就
说明选对了,退出循环。当然了,循环的总次数不能超过items count

源代码如下

   Dim y '获得所要退回步骤名称的Y值坐标
   Dim i
   Dim rownum '循环上限
   dim radiogroup 'radio 对象
   dim backroutes '选择项目名
     y=browser("browser").Window("***").Page("***").WebElement("html tag:=TD","innertext:="&backroutes).GetRoProperty("abs_y")+2
           Set radiogroup=browser("browser").Window("****").Page("****").WebRadioGroup("html tag:=INPUT","name:=radio1")
           rownum=radiogroup.GetRoProperty("items count")
           For i=0 to rownum-1
                   radiogroup.select "#"&i
           If radiogroup.GetRoProperty("abs_y")=y Then
                           browser("browser").Window("*****").Page("******").WebButton("html tag:=INPUT","name:=确定").click
                           Exit for
                   End If
           Next

[ 本帖最后由 kursk 于 2007-5-31 12:42 编辑 ]

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

21#
发表于 2009-9-18 11:18:20 | 只看该作者
其实玩QTP的,都应该掌握一个原则或者说有这种心得,针对某些控件不好处理的,可以尝试从它的父级对象入手。这是一个比较常见和适用的方法。
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2009-9-17 22:54:16 | 只看该作者
WebTable看来是个好东东,要好好学学,谢谢分享:)
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2009-7-28 18:49:02 | 只看该作者
very much   thinks  !!!!!!

谢谢楼主,也谢谢garyyes
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-9-2 09:19:29 | 只看该作者
原帖由 爱喝可乐的蚊子 于 2008-8-28 17:01 发表
源代码有两个地方不懂
1.  y=browser("browser").Window("***").Page("***").WebElement("html tag:=TD","innertext:="&backroutes).GetRoProperty("abs_y")+2
这个"innertext:="&backroutes  里的&backrout ...


innertext:=backroutes 就是提取其中的按钮的属性的

select #&i 这是选择i作为下拉菜单的选项,每次都进行选择。
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-8-28 17:01:20 | 只看该作者
源代码有两个地方不懂
1.  y=browser("browser").Window("***").Page("***").WebElement("html tag:=TD","innertext:="&backroutes).GetRoProperty("abs_y")+2
这个"innertext:="&backroutes  里的&backroutes是什么意思啊?
2.  radiogroup.select "#"&i
这个"#"&i是什么用法啊?
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-8-26 14:39:11 | 只看该作者
如果想要执行,随机点击webradiogroup 应该怎么做呢?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-7-23 04:34:30 | 只看该作者
原帖由 kursk 于 2007-4-29 07:59 发表
如下图,我们有时会遇到下图中的列表,表中的列表项的个数是动态变化的,排列顺序也是动态变化的。操作的方法是
点击所要选择的项目的前面的单选按钮,然后才能对这一项进行操作——删除、修改等等
24220

...


对于dropdown list 和Web radio group这两种object,都可以用这种方法select一个item。但要注意:
1,先用GetRoProperty("items count") 或 Object.property.allitem(好像这样写,^_^),得到item数做循环。
2,select一个值时,用value和index值都是可以的。value是指字面的字符串,index是从0开始,前面加‘#’和不加,都是可以的。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-7-21 23:08:00 | 只看该作者

回复 #10 kursk 的帖子

GetRowWithCellText("branch1_1",Column,[StartFromRow])可以得到想要的cell的Row。但我不知道怎么样获得这个cell的Index值。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-6-1 17:23:38 | 只看该作者

回复 #11 henhenchen 的帖子

原来如此,这个方法的确简单有效。赞一个。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-6-1 14:16:05 | 只看该作者
原来如此,握手
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-6-1 12:18:59 | 只看该作者

回复 #10 kursk 的帖子

和你的一样啊.
FOR I=1 TO ROWNO.
IF 比如 INSTR(GETCELLDATA(I,3),"“branch3_1”))>1 THEN K=I EXIT FOR
END
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2007-6-1 11:16:38 | 只看该作者
webtable怎么确定找的元素是第几行?第几列呢?

我开始也想用行列来找,但是没有找到对应的属性,于是才采用了坐标对位的方法
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-5-31 21:28:27 | 只看该作者

回复 #1 kursk 的帖子

不错. 要是我遇到这种情况.我会用到WEBTABLE 来处理.思路和你的差不多.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-5-31 14:13:33 | 只看该作者
不错
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2007-5-31 12:41:40 | 只看该作者
exit for是退出最近的一个for循环,应该没有什么关系吧
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2007-5-12 17:59:24 | 只看该作者
    你在 #1 写的 Exit for 和 End If的位置对吗? 是否应该交换一下?难道这就是你要的效果?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2007-5-12 17:57:59 | 只看该作者
    原帖由 kursk 于 2007-4-29 08:10 发表
    sdlkfj1 赚点技术指数,纯粹好玩,大家不要生气啊


    你好玩了,可是大家不觉得这好玩,因为就没有几个人来看。sdlkfj6
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2007-4-29 12:03:02 | 只看该作者
    我这个方法就是根据同一行的其他列的值来辅助选择的

    如果是根据radiogroup的value值来选择应该是很简单的吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-4-29 09:09:30 | 只看该作者
    动态的RadioGroup还是要根据具体的情况来处理。我有碰到要用RadioGroup的value来选择的,也有要根据动态的行的其它列的值来辅助选择的。不好说阿
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-20 14:34 , Processed in 0.084056 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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