51Testing软件测试论坛

标题: 如何用script动态添加Object Repository 中的对象? [打印本页]

作者: hcgzzz    时间: 2007-8-6 17:45
标题: 如何用script动态添加Object Repository 中的对象?
我要网上找到了以下的代码,但是却总是不成功。
以下是 Example script:
' 載入 Object Repository
Set oru = CreateObject ("Mercury.ObjectRepositoryUtil")
oru.LoadActionRepository "C:\Temp\Login","Action1"

' 取得 Parent Object
Set ParentObj = oru.GetObjectByParent( NULL, "Dialog(""Login"")" )

' 創建新的 Test Object ( A Stdbutton in this case ) 並設置其屬性
set StdButton = CreateObject("Mercury.WinButton")
StdButton.SetTOProperty "text","Cancel"
StdButton.SetTOProperty "nativeclass","Button"

' 將新的 Test Object (StdButton) 加到 parent object
' ( DialogBox). Set the logical name of the new Test Object to "Cancel"
oru.AddObject StdButton, ParentObj, "Cancel"

' 儲存 Object Repository
oru.Save
Set ParentObj = nothing
Set StdButton = nothing
Set oru = nothing

它总是要那它红色的代那里出错。提示为:'GetObjectByParent' - Object cannot be found.。
我用的是QTP 8.2

[ 本帖最后由 hcgzzz 于 2007-8-6 17:51 编辑 ]
作者: jackymail    时间: 2007-8-6 17:53
应该是需要父类对象在库里面已经存在,你的估计是不存在。Dialog(""Login"")
作者: hcgzzz    时间: 2007-8-6 17:59
那要如何添加其父类对象阿?
作者: jackymail    时间: 2007-8-7 10:33
应该是把dialog先添加到对象库。感觉是。
原帖由 hcgzzz 于 2007-8-6 17:59 发表
那要如何添加其父类对象阿?

作者: hcgzzz    时间: 2007-8-7 10:51
我昨天也试过了。还是不行。我将Login 对象增加进入去了。还是相同的错误。我用的是飞机的那个例子。用动态增加Object Repository 的话,就可以尽量使测试与环境的关系分开。
      您有没有自动测试的框架的例子代码阿?
作者: jackymail    时间: 2007-8-7 11:10
我现在用的vista装的qtp,不能创建这种类型程序对象,不然就给你试试看了。。。
作者: hcgzzz    时间: 2007-8-7 12:08
哦。您平时做测试是用手工的还是自动的阿?
作者: jackymail    时间: 2007-8-7 13:27
manual.....
作者: overfly    时间: 2007-8-7 14:20
我想"Dialog(""Login"")"应该还有个父对象吧
作者: hcgzzz    时间: 2007-8-7 15:31
原帖由 overfly 于 2007-8-7 14:20 发表
我想"Dialog(""Login"")"应该还有个父对象吧


Dialog(""Login"")"是一个启动的登陆窗体,没有父对象的。
[attach]30605[/attach]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2