qtp如何读取到div中的内容
在作一个金融系统,在右侧有个树形节点,用IEWebDeveloper查看该树形节点,都时div,也就是div下面还是div,现在在取得div显示的文本内容类似的html代码如下
<DIV class=clip id=dd0 style="DISPLAY: block"><DIV class=dTreeNode><A href="javascript: d.o(1);"><IMG id=jd1 alt="" src="/spdbank/struts/resource/style/image/minusbottom.gif"></A><IMG id=id1 alt="" src="/spdbank/struts/resource/style/image/folderopen.gif"><A class=node href="javascript: d.o(1);">现金管理</A></DIV> 那个div有一个id=dd0的属性,你可以用描述性编程来获取到那个对象,然后就可以通过getRoproperties()方法来获取到text属性,也就是文本内容了。
这是一般的方法,但是具体写代码的时候,被测程序不一样,写出来的代码也会不一样,这个你多试几次吧。 取不到哦,我试了好多次。
Set formrighttree=browser("creationtime:=2").page("index:=0")'.frame("index:=1")
Set dnodedesc = description.Create()
dnodedesc("id").value ="dd0"
set dnode=formrighttree.childobjects(dnodedesc)
If dnode.count>0 Then
msgbox dnode.count
dnode(3).click
End If 可能是div的层数比较多,好像就找不到。或者说qtp不识别div qtp可以根据dom来访问页面,如
set doc=Browser().page().object
for each element in doc.all
innerText=element.InnerText
className=element.ClassName
if className="div的class值" then
innerText就是要的数据
end
next
可以试一下 问下,div的classname是什么啊? set obj = browser("creationtime:=2").page("index:=0")'.frame("index:=1").Object.getElementsByTagName("body")
print obj(0).getattribute("innerHTML")
然后再提取你想要的 ;
我没有试过,看看可不可以 学习了
回复 7# 的帖子
想问下b47617,怎么判断obj 的个数,比如判断obj(100)中的100越界了,用count不行。 用length试试 用 ie developer 查看一下页面的对象,看什么是唯一来识别的,classname,或者id都行的.回复 11# 的帖子
用IE developer看了下,只有外一层div的id是唯一的。 可以用 length回复 12# 的帖子
有一个就好啊!Msgbox getMessageByDivId("dd0")
Function getMessageByDivId(strDivId)
'If the div not found
On error resume next
Set nodea = Browser("Creationtime:=0").Page("index:=0").Object.getElementById(strDivId)
If Err.number <> 0 Then getMessageByDivId = "" : Exit Function
Dim strReuslt
IterateNode nodea, strReuslt
getMessageByDivId = strReuslt
End Function
Function IterateNode(strNodeName, byref strReturn)
'If is a text node, get value.
If strNodeName.nodeType = 3 Then'3是文本节点,可根据需要调整为其它类型节点
atext = strNodeName.nodeValue
strReturn = strReturn & atext
Exit Function
End If
'For iteration.
Set childNod = strNodeName.childNodes
If Not IsEmpty(childNod) and childNod.length <> 0 Then
For i = 0 to childNod.length - 1
IterateNode childNod(i), strReturn
Next
End If
End Function 好贴
回复 13# 的帖子
如何往下再取div,在没有id等区分的情况下回复 14# 的帖子
试验了下,在IterateNode函数的“ If strNodeName.nodeType = 3 Then'3是文本节点,可根据需要调整为其它类型节点”处出错,说strNodeName缺少对象。如果可以的话能说明下整个函数嘛。 Studying回复 17# 的帖子
getMessageByDivId:从父节点入手,通过遍历其子节点的方式找到目标对象。
IterateNode:
递归遍历其子节点,查找文本节点,找到第一个后退出递归并返回其文本内容。
在出错处断点调试吧,看看是哪个分支出了问题。
[ 本帖最后由 RayTM 于 2009-6-11 18:15 编辑 ] 好帖子 学习了哈哈
看到这个让我想起了之前做MKEY手机开发的时候 是通过XPAH来提取HTML里的内容的。
页:
[1]
2