51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7385|回复: 21
打印 上一主题 下一主题

[原创] qtp如何读取到div中的内容

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-6-8 15:46:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在作一个金融系统,在右侧有个树形节点,用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>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

22#
发表于 2014-12-3 19:45:38 | 只看该作者
好帖,标记学习
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2010-9-17 14:26:12 | 只看该作者
HAO
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-10-15 22:18
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    20#
    发表于 2009-6-14 15:58:12 | 只看该作者
    好帖子 学习了哈哈
    看到这个让我想起了之前做MKEY手机开发的时候 是通过XPAH来提取HTML里的内容的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2009-6-11 18:08:30 | 只看该作者

    回复 17# 的帖子

    getMessageByDivId:
    从父节点入手,通过遍历其子节点的方式找到目标对象。
    IterateNode:
    递归遍历其子节点,查找文本节点,找到第一个后退出递归并返回其文本内容。

    在出错处断点调试吧,看看是哪个分支出了问题。

    [ 本帖最后由 RayTM 于 2009-6-11 18:15 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2009-6-10 17:12:13 | 只看该作者
    Studying
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2009-6-10 16:43:03 | 只看该作者

    回复 14# 的帖子

    试验了下,在IterateNode函数的“ If strNodeName.nodeType = 3 Then'3是文本节点,可根据需要调整为其它类型节点”处出错,说strNodeName缺少对象。如果可以的话能说明下整个函数嘛。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2009-6-10 16:39:37 | 只看该作者

    回复 13# 的帖子

    如何往下再取div,在没有id等区分的情况下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2009-6-10 15:21:15 | 只看该作者
    好贴
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2009-6-10 14:10:36 | 只看该作者

    回复 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#
    发表于 2009-6-10 12:52:12 | 只看该作者
    可以用 length
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2009-6-10 11:47:16 | 只看该作者

    回复 11# 的帖子

    用IE developer看了下,只有外一层div的id是唯一的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-6-9 20:39:43 | 只看该作者
    用 ie developer 查看一下页面的对象,看什么是唯一来识别的,classname,或者id都行的.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2009-6-9 17:54:34 | 只看该作者
    用length试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2009-6-9 17:22:23 | 只看该作者

    回复 7# 的帖子

    想问下b47617,怎么判断obj 的个数,比如判断obj(100)中的100越界了,用count不行。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2009-6-9 16:52:50 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-6-9 16:48:56 | 只看该作者
    set obj = browser("creationtime:=2").page("index:=0")'.frame("index:=1").Object.getElementsByTagName("body")
    print obj(0).getattribute("innerHTML")  
    然后再提取你想要的 ;
    我没有试过,看看可不可以
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2009-6-9 15:42:48 | 只看该作者
    问下,div的classname是什么啊?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-6-8 20:27:02 | 只看该作者
    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

    可以试一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2009-6-8 17:08:40 | 只看该作者
    可能是div的层数比较多,好像就找不到。或者说qtp不识别div
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 12:09 , Processed in 0.079090 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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