|
如下图,我们有时会遇到下图中的列表,表中的列表项的个数是动态变化的,排列顺序也是动态变化的。操作的方法是
点击所要选择的项目的前面的单选按钮,然后才能对这一项进行操作——删除、修改等等
在使用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 编辑 ] |
|