51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 请教:qtp 如何遍历div列表

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-12-11 10:19:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目前有这么一个页面:

不是WebTable的,是div
如果要实现这么一个功能:比如要删除某一个好友,根据昵称,勾选对应的复选框。
复选框有固定的id,可以通过查看dom查到,写死在代码里,
可我想通过遍历来实现这个功能,而不是写死id


参照书上226页的例子,但那个是webtable的,对于这种div的,我应该如何做呢。
Dim oWebElements,oDesc
Set oDesc=description.Create()
oDesc("micClass").value="WebElement"
oDesc("html tag").value="DIV"
oDesc("class").value="fbox"
set oWebElements=Browser("好友管理").Page("好友管理").ChildObjects(oDesc)
oCount=oWebElements.count()

For i=1  To  oCount
这里该如何写呢?
Next

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2012-12-11 10:33:51 | 只看该作者

  1. Dim tempObj
  2. For i=1 To oCount -1
  3.     Set tempObj = oWebElements.Item(i)
  4.     --Do someThing
  5. Next
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-12-11 11:57:07 | 只看该作者
.object.getElement系列函数,包括了:
getElementsByName
getElementByID
getElementsByTagName
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-12-11 13:53:00 | 只看该作者
回复 2# xjwldlover


    测试了代码报错。div里面存在item?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2012-12-11 14:26:33 | 只看该作者
回复 4# robinpipi

额~  div里存在item ,这句没看懂,这两个不搭啊,item是childObjects返回的Collection的元素。
如果在 Collection.item(1)这里报错了,明显是下标越界,就是你的childobjects返回的元素个数是0个,这里下标最低使用1,当然报错了。
把i=1修改成For I=0 to oWebelements.count-1
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2012-12-11 14:57:01 | 只看该作者
回复 5# xjwldlover


    惭愧,那接下来如何写呢,新手,恳求。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2012-12-11 15:18:13 | 只看该作者
这是通过spy获取到的页面代码

  1. <DIV class=fbox>
  2. <INPUT id=checkbox_19625278 class=fbox_check name=checkbox value=19625278 type=checkbox>
  3. <A class=avatarlink href="http://my.cn/index.php?userid=19625278">
  4. <IMG class=avatar_s2 title=网友4q3g0r1 alt=网友4q3g0r1 src="http://userface.img.pic.com/60x60/922/417/19625278.jpg">
  5. <EM class=snsoffline></EM></A><UL>
  6. <TABLE border=0>
  7. <TBODY>
  8. <TR>
  9. <TD>
  10. <A class=fname href="http://my.cn/index.php?userid=19625278">网友4q3g0r1</A>&nbsp;&nbsp;
  11. </TD>
  12. <TD>
  13. <IMG style="DISPLAY: none" id=fri_block_19625278 align=absMiddle src="http://my.cn/theme/default/images/u42.png">
  14. </TD>
  15. </TR>
  16. </TBODY>
  17. </TABLE>
  18. <LI id=remark19625278 class=finfo title=""></LI>
  19. <LI class=fbtn>
  20. <A href="javascript:send_mes(19625278,'网友4q3g0r1');">发短消息</A>&nbsp;&nbsp;|&nbsp;&nbsp;
  21. <A id=fri_btn19625278 href="javascript:fri_blockfriends(19625278,1)">屏蔽动态</A>&nbsp;&nbsp;|&nbsp;&nbsp;
  22. <A href="javascript:fri_showEditFriendsTip('',19625278,1,'网友4q3g0r1')">修改组和备注</A>&nbsp;&nbsp;|&nbsp;&nbsp;
  23. <A href="javascript:fri_showDelFriendsTip(19625278,'网友4q3g0r1','NO')">删除</A>
  24. </LI>
  25. </UL>
  26. </DIV>
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2012-12-11 15:20:12 | 只看该作者
获取innertext:        tempObj.GetROProperty("innertext") 得到的是:网友4q3g0r1 发短消息  |  屏蔽动态  |  修改组和备注  |  删除
这个内容,怎么能跟checkbox框对应,或者说如何获取checkbox框呢
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2012-12-11 15:54:20 | 只看该作者
通过childObject 和 For next找到单个对象obj后,使用obj的相关方法获取checkbox对象(获取参见3#)。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2012-12-11 16:09:11 | 只看该作者
回复 9# xjwldlover


For i=0  To  oCount-1
Set tempObj = oWebElements.Item(i)
msgbox Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).value
Next

这跟是否获取到单个对象obj没关系了啊
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2012-12-11 17:37:59 | 只看该作者
额 建议LZ先获取任意一个checkbox,做勾选操作→
然后补强,根据条件过滤checkbox,然后勾选。

LZ目前的思路有点像Object.Set "VALUE",想一步到位,这样不太容易啊;目前的问题中间多了一步,Object是什么~
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2012-12-11 17:50:48 | 只看该作者
回复 11# xjwldlover


    你是说Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).value 这个object吗
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2012-12-11 17:53:23 | 只看该作者
目前我大概有个思路:首先获得了tempObj,然后判断这个tempObj的innertext是否包含昵称,如果包含的话,那么Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).set "ON" ,不晓得对不对
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2012-12-11 17:58:06 | 只看该作者
Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).Set "ON"  为什么报对象不支持此方法 set
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2012-12-11 17:59:47 | 只看该作者
晓得了,Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).checked=true
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2012-12-17 15:19:40 | 只看该作者
本帖最后由 梧桐落叶 于 2012-12-17 15:25 编辑

一般会这样处理input checkbox
  1. Set MyDescrīption = Descrīption.Create()
  2. MyDescrīption(“html tag”).Value = “INPUT”
  3. MyDescrīption(“type”).Value = “checkbox”
  4. Set Checkboxes = Browser("好友管理").Page("好友管理").ChildObjects(MyDescrīption)

  5. NoOfChildObjs = Checkboxes.Count

  6. For Counter=0 to NoOfChildObjs-1

  7. Checkboxes(Counter).Set “ON”

  8. Next
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-16 12:52 , Processed in 0.076618 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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