【在线等待】如何进行多选
1、我想通过下面的循环语句连续4次进行对象类别是WebElement的多选,但运行过程中,每次单击,都会将上次的勾选取消,只勾选当前点击的。2、通过手动点击webtable的每一行的第一列,是可以实现多选的,不过点击其他列确实会取消上一次勾选的。但我下面的脚本ChildItem (1,1,"WebElement",0)也是选中的是第一列啊,为什么会不能实现多选呢
Dim i
For i=35 to 38
Set oDesc = Description.Create()
oDesc("class").Value = "x-grid3-row-table"
oDesc("index").Value = i
set a=Browser("Centerm Management System").Page("Centerm Management System").WebTable(oDesc).ChildItem (1,1,"WebElement",0)
a.click
Next ChildItem (1,1,"WebElement",0)
每次都点1行1列,不取消那才怪了
回复 2# 的帖子
因为我这个系统webtable不是作为独立一个整体,而是每一行都作为一个单独的webtable。所以你看我前面的循环语句,是分别选择4个不同的webtable(每个webtable只有1行,有3列),通过运行,系统也在4个webtable的第一行第一列进行选中,目前的问题是,无法多选 index这种属性只能靠调试、打日志了长什么样也不知道,帮不了你了。。。
一种简单的方法(实际项目中用过)
'首先将任意一个需要勾选的对象的上级WebTable添加到对象库,然后以下代码可实现循序点击index为35到38的对象'假设添加进来的对象的上级WebTable为:WebTable("35"),则:
For i=35 to 38
Browser("Centerm Management System").Page("Centerm Management System").WebTable("35").SetTOProperty("index",i)
Browser("Centerm Management System").Page("Centerm Management System").WebTable("35").ChildItem (1,1,"WebElement",0).click
Next
'附:具体操作:
'添加上级WebTable对象的方法,按CTRL+R,点击“+”按钮,点击需要勾选的对象,点击上级的WebTable,点击OK
[ 本帖最后由 feiyunkai 于 2010-5-13 15:07 编辑 ]
回复 5# 的帖子
Browser("Centerm Management System").Page("Centerm Management System").WebTable("35").SetTOProperty("index",i)-----这句用意是什么另外,我目前这个系统存在一个问题,就是无法将webtable添加到对象库,所以我都采用描述性编程
采用描述性编程,可以使用以下代码
'修改对象的index属性,作用等同于你代码中的oDesc("index").Value = i'另外,QTP只要能识别的对象就可以添加到对象库,上一个回复已经附加了添加方法:打开对象库,点击“+”按钮,点击你需要勾选的对象,(后面这个步骤是重点)在弹出的Object selection-add to repository中选择WebTable,这样这个WebTable就添加到对象库了,除非Object selection中没有那个对象
'采用描述性编程,可以使用以下代码
For i=35 to 38
Browser("Centerm Management System").Page("Centerm Management System").WebTable("class:=x-grid3-row-table","index:="&i).ChildItem (1,1,"WebElement",0).click
Next
[ 本帖最后由 feiyunkai 于 2010-5-13 15:36 编辑 ]
回复 7# 的帖子
我有用过你这种方式,但还是每次选中都会把上次的取消回复 7# 的帖子
另外,想再请教你,你也看到我选中webtable,是通过class和index,class属性比较稳定不会变化,但index目前我是通过数它处于第几个这样确定的,有没有更好的方式来定位我想要的webtable 试试onfocus回复 10# 的帖子
onfocus事件也无效 原帖由 zoujufei 于 2010-5-13 15:33 发表 http://bbs.51testing.com/images/common/back.gif另外,想再请教你,你也看到我选中webtable,是通过class和index,class属性比较稳定不会变化,但index目前我是通过数它处于第几个这样确定的,有没有更好的方式来定位我想要的webtable
'我知道的方法有2个:
'方法一:添加新属性,不过这个方法不太易用,需要把每个属性相同的对象都添加一个新属性
'方法二、循环查找(我的项目中就用了这种方法),利用单元格内容确定所需要勾选的复选框,例:
Dim row,maxrow
maxrow=Browser("***").Page("***").WebTable("***").RowCount'获取WebTable最大行数
For row=2 to maxrow
a=Browser("***").Page("***").WebTable("***").GetCellData(row,2)'假设第2列的单元格内容,用于区分是否勾选
If a="值" Then '设置勾选条件
Browser("***").Page("***").WebTable("***").ChildItem(row,1,"webcheckbox",0).click'勾选第一列的复选框
End If
Next 用a.highlight看看你每次是否都定位到那个对象
回复 12# 的帖子
根据单元格内容确实可以找到我想要的那一行,但问题是单元格内容很容易 变化,无法保证在脚本运行时也还是这样的内容。所以目前我通过index,但index又经常会变动,因为当前的webtable是一个子对话框,它的父对话框又有很多class属性相同的webtable。目前,我没有很好的办法来区分父界面和子界面的webtable,只能通过index 每操作一下。。highlight调试一下。。。多数是index规则没找到,每次操作后可能会变
页:
[1]