动态WebRadioGroup的选择方法
如下图,我们有时会遇到下图中的列表,表中的列表项的个数是动态变化的,排列顺序也是动态变化的。操作的方法是点击所要选择的项目的前面的单选按钮,然后才能对这一项进行操作——删除、修改等等
在使用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 编辑 ] sdlkfj1 赚点技术指数,纯粹好玩,大家不要生气啊 动态的RadioGroup还是要根据具体的情况来处理。我有碰到要用RadioGroup的value来选择的,也有要根据动态的行的其它列的值来辅助选择的。不好说阿 我这个方法就是根据同一行的其他列的值来辅助选择的
如果是根据radiogroup的value值来选择应该是很简单的吧 原帖由 kursk 于 2007-4-29 08:10 发表 http://bbs.51testing.com/images/common/back.gif
sdlkfj1 赚点技术指数,纯粹好玩,大家不要生气啊
你好玩了,可是大家不觉得这好玩,因为就没有几个人来看。sdlkfj6 你在 #1 写的 Exit for 和 End If的位置对吗? 是否应该交换一下?难道这就是你要的效果? exit for是退出最近的一个for循环,应该没有什么关系吧 不错
回复 #1 kursk 的帖子
不错. 要是我遇到这种情况.我会用到WEBTABLE 来处理.思路和你的差不多. webtable怎么确定找的元素是第几行?第几列呢?我开始也想用行列来找,但是没有找到对应的属性,于是才采用了坐标对位的方法
回复 #10 kursk 的帖子
和你的一样啊.FOR I=1 TO ROWNO.
IF 比如 INSTR(GETCELLDATA(I,3),"“branch3_1”))>1 THEN K=I EXIT FOR
END 原来如此,握手
回复 #11 henhenchen 的帖子
原来如此,这个方法的确简单有效。赞一个。回复 #10 kursk 的帖子
GetRowWithCellText("branch1_1",Column,)可以得到想要的cell的Row。但我不知道怎么样获得这个cell的Index值。 原帖由 kursk 于 2007-4-29 07:59 发表 http://bbs.51testing.com/images/common/back.gif如下图,我们有时会遇到下图中的列表,表中的列表项的个数是动态变化的,排列顺序也是动态变化的。操作的方法是
点击所要选择的项目的前面的单选按钮,然后才能对这一项进行操作——删除、修改等等
24220
...
对于dropdown list 和Web radio group这两种object,都可以用这种方法select一个item。但要注意:
1,先用GetRoProperty("items count") 或 Object.property.allitem(好像这样写,^_^),得到item数做循环。
2,select一个值时,用value和index值都是可以的。value是指字面的字符串,index是从0开始,前面加‘#’和不加,都是可以的。 如果想要执行,随机点击webradiogroup 应该怎么做呢? 源代码有两个地方不懂:hug:
1.y=browser("browser").Window("***").Page("***").WebElement("html tag:=TD","innertext:="&backroutes).GetRoProperty("abs_y")+2
这个"innertext:="&backroutes里的&backroutes是什么意思啊?
2.radiogroup.select "#"&i
这个"#"&i是什么用法啊? 原帖由 爱喝可乐的蚊子 于 2008-8-28 17:01 发表 http://bbs.51testing.com/images/common/back.gif
源代码有两个地方不懂:hug:
1.y=browser("browser").Window("***").Page("***").WebElement("html tag:=TD","innertext:="&backroutes).GetRoProperty("abs_y")+2
这个"innertext:="&backroutes里的&backrout ...
innertext:=backroutes 就是提取其中的按钮的属性的
select #&i 这是选择i作为下拉菜单的选项,每次都进行选择。 very much thinks!!!!!!
谢谢楼主,也谢谢garyyes WebTable看来是个好东东,要好好学学,谢谢分享:)
页:
[1]
2