51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4120|回复: 11
打印 上一主题 下一主题

[原创] 怎么把qtp对象库中的对象读取出来

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-9-20 16:40:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果用一门编程语言把qtp对象库中存取的对象读取出来?(window,dialog,button,label,edit类似这些对象),qtp本身的keyword 视图,想添加一个step,点击出现很多对象,可供你选择.不知道qtp对象库是如何来存取对象和属性的.如果知道它的格式就好了.先谢了.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-9-20 21:51:08 | 只看该作者
    我记得在 QTP  Help里面有个类似的例子,你可以找找看。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2007-9-21 09:23:31 | 只看该作者
    原帖由 walker1020 于 2007-9-20 21:51 发表
    我记得在 QTP  Help里面有个类似的例子,你可以找找看。

    谢了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-9-21 11:23:41 | 只看该作者
    QTP是通过对象的属性值来识别对象库里的对象的,弄懂它是怎么从库中取值的,就知道QTP的基本原理了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2008-7-11 21:40:29 | 只看该作者
    有人能给你个完整的答案吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2008-7-11 23:06:46 | 只看该作者
    写个VBS脚本就行了,用ObjectRepositoryUtil对象,下面是QTP帮助文档中的一个例子:

    'The following example retrieves an object repository's objects and properties,
    'looks for specific test objects using several methods, and copies a test object
    'to another object repository.

    Dim ImageObj, PageObj, RepositoryFrom, RepositoryTo

    Set RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")
    Set RepositoryTo = CreateObject("Mercury.ObjectRepositoryUtil")

    RepositoryFrom.Load "C:\QuickTest\Tests\Flights.tsr"
    RepositoryTo.Load "E:\Temp\Tests\Default.tsr"
    Function EnumerateAllChildProperties(Root)
    'The following function recursively enumerates all the test objects directly under
    'a specified parent object. For each test object, a message box opens containing the
    'test object's name, properties, and property values.
        Dim TOCollection, TestObject, PropertiesCollection, Property, Msg

        Set TOCollection = RepositoryFrom.GetChildren(Root)

        For i = 0 To TOCollection.Count - 1
                Set TestObject = TOCollection.Item(i)
                Msg = RepositoryFrom.GetLogicalName(TestObject) & vbNewLine
                Set PropertiesCollection = TestObject.GetTOProperties()

                For n = 0 To PropertiesCollection.Count - 1
                    Set Property = PropertiesCollection.Item(n)
                    Msg = Msg & Property.Name & "-" & Property.Value & vbNewLine
                Next
                MsgBox Msg

    EnumerateAllChildProperties TestObject
        Next

    End Function

    Function EnumerateAllObjectsProperties(Root)
    'The following function enumerates all the test objects under a specified object.
    'For each test object, a message box opens containing the test object's name,
    'properties, and property values.
    Dim TOCollection, TestObject, PropertiesCollection, Property, Msg

        Set TOCollection = RepositoryFrom.GetAllObjects(Root)

        For i = 0 To TOCollection.Count - 1
            Set TestObject = TOCollection.Item(i)
                        Msg = RepositoryFrom.GetLogicalName(TestObject) & vbNewLine

                Set PropertiesCollection = TestObject.GetTOProperties()
                For n = 0 To PropertiesCollection.Count - 1
                    Set Property = PropertiesCollection.Item(n)
                    Msg = Property.Name & "-" & Property.Value & vbNewLine
                Next

            MsgBox Msg
        Next

    End Function

    Function RenameAllImages(Root)
    'The following function sets a new name for all image test objects under a specified object.
    Dim TOCollection, TestObject, PropertiesCollection, Property

        Set TOCollection = RepositoryTo.GetAllObjectsByClass("Image")

        For i = 0 To TOCollection.Count - 1
                Set TestObject = TOCollection.Item(i)
                RepositoryTo.RenameObject (TestObject, "Image " & i)
                RepositoryTo.UpdateObject TestObject
        Next

    End Function

    Function RemoveAllLinks(Root)
    'The following function recursively enumerates all the test objects under a specified object.
    'It looks for all test objects of class Link and removes them from their parent objects.
        Dim TOCollection, TestObject, PropertiesCollection, Property

        Set TOCollection = RepositoryFrom.GetChildren(Root)

        For i = 0 To TOCollection.Count - 1
                Set TestObject = TOCollection.Item(i)
                TOClass = TestObject.GetTOProperty("micclass")

             If TOClass = "Link" Then
                    RepositoryFrom.RemoveObject Root, TestObject
                End If

            EnumerateAllChildProperties TestObject
        Next

    End Function
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-7-12 09:27:24 | 只看该作者
    谢谢楼上这位达人

    我的QTP9.0运行这段代码时,在运行到:

    Set RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")

    就报错:ActiveX部件不能创建对象:"Mercury.ObjectRepositoryUtil"

    而且这段代码在QTP的帮助文档里找不到啊!ObjectRepositoryUtil都找不到

    ???
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2008-7-12 09:52:57 | 只看该作者
    换成9.5看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2008-7-12 10:07:22 | 只看该作者
    一个英文网站上说:需要安装QuickTest Plus,在QuickTest Plus里面手工注册:

    RepositoryUtil.dll。而且还说不知到9.0是否支持。

    我在9.0的基础上装了一个8.2的QuickTest Plus。按他说的做了

    Set RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")没问题了

    RepositoryFrom.Load又报错:'Load'-General error.

    继续研究中,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2008-7-12 10:35:51 | 只看该作者
    在9.5中可以执行以下代码:
    Dim RepositoryFrom,TOCollection
    Set RepositoryFrom = CreateObject("Mercury.ObjectRepositoryUtil")
    RepositoryFrom.Load "C:\Login.tsr"
    Set TOCollection = RepositoryFrom.GetAllObjectsByClass("WinButton")
    Msgbox TOCollection.Count

    但是不建议使用,因为会出现RunTime错误。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-29 10:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2008-7-13 11:15:58 | 只看该作者
    有没有什么办法处理这个run time error呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2008-7-14 17:01:12 | 只看该作者

    回复 5# 的帖子

    9.5新功能吧,9.0的好像没有看到过,看来有时间得去找一下9.5的看看。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 20:47 , Processed in 0.069986 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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