请教:qtp 如何遍历div列表
目前有这么一个页面:不是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=1TooCount
这里该如何写呢?
Next
Dim tempObj
For i=1 To oCount -1
Set tempObj = oWebElements.Item(i)
--Do someThing
Next
.object.getElement系列函数,包括了:
getElementsByName
getElementByID
getElementsByTagName 回复 2# xjwldlover
测试了代码报错。div里面存在item? 回复 4# robinpipi
额~div里存在item ,这句没看懂,这两个不搭啊,item是childObjects返回的Collection的元素。
如果在 Collection.item(1)这里报错了,明显是下标越界,就是你的childobjects返回的元素个数是0个,这里下标最低使用1,当然报错了。
把i=1修改成For I=0 to oWebelements.count-1 回复 5# xjwldlover
惭愧,那接下来如何写呢,新手,恳求。 这是通过spy获取到的页面代码
<DIV class=fbox>
<INPUT id=checkbox_19625278 class=fbox_check name=checkbox value=19625278 type=checkbox>
<A class=avatarlink href="http://my.cn/index.php?userid=19625278">
<IMG class=avatar_s2 title=网友4q3g0r1 alt=网友4q3g0r1 src="http://userface.img.pic.com/60x60/922/417/19625278.jpg">
<EM class=snsoffline></EM></A><UL>
<TABLE border=0>
<TBODY>
<TR>
<TD>
<A class=fname href="http://my.cn/index.php?userid=19625278">网友4q3g0r1</A>
</TD>
<TD>
<IMG style="DISPLAY: none" id=fri_block_19625278 align=absMiddle src="http://my.cn/theme/default/images/u42.png">
</TD>
</TR>
</TBODY>
</TABLE>
<LI id=remark19625278 class=finfo title=""></LI>
<LI class=fbtn>
<A href="javascript:send_mes(19625278,'网友4q3g0r1');">发短消息</A> |
<A id=fri_btn19625278 href="javascript:fri_blockfriends(19625278,1)">屏蔽动态</A> |
<A href="javascript:fri_showEditFriendsTip('',19625278,1,'网友4q3g0r1')">修改组和备注</A> |
<A href="javascript:fri_showDelFriendsTip(19625278,'网友4q3g0r1','NO')">删除</A>
</LI>
</UL>
</DIV>
获取innertext: tempObj.GetROProperty("innertext") 得到的是:网友4q3g0r1 发短消息|屏蔽动态|修改组和备注|删除
这个内容,怎么能跟checkbox框对应,或者说如何获取checkbox框呢 通过childObject 和 For next找到单个对象obj后,使用obj的相关方法获取checkbox对象(获取参见3#)。 回复 9# xjwldlover
For i=0TooCount-1
Set tempObj = oWebElements.Item(i)
msgbox Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).value
Next
这跟是否获取到单个对象obj没关系了啊 额 建议LZ先获取任意一个checkbox,做勾选操作→
然后补强,根据条件过滤checkbox,然后勾选。
LZ目前的思路有点像Object.Set "VALUE",想一步到位,这样不太容易啊;目前的问题中间多了一步,Object是什么~ 回复 11# xjwldlover
你是说Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).value 这个object吗 目前我大概有个思路:首先获得了tempObj,然后判断这个tempObj的innertext是否包含昵称,如果包含的话,那么Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).set "ON" ,不晓得对不对 Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).Set "ON"为什么报对象不支持此方法 set 晓得了,Browser("好友管理").Page("好友管理").Object.getElementsByName("checkbox")(i).checked=true 本帖最后由 梧桐落叶 于 2012-12-17 15:25 编辑
一般会这样处理input checkbox
Set MyDescrīption = Descrīption.Create()
MyDescrīption(“html tag”).Value = “INPUT”
MyDescrīption(“type”).Value = “checkbox”
Set Checkboxes = Browser("好友管理").Page("好友管理").ChildObjects(MyDescrīption)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
Checkboxes(Counter).Set “ON”
Next
页:
[1]