51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2349|回复: 3
打印 上一主题 下一主题

[原创] 如何在子action中使用父action的对象?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-5-3 09:20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,在一个action(action_father)中使用RunAction来运行另一个action(action_son),怎么样在这个action_son中调用action_father里的对象?
这里面如果是值传递的话可以解决,只要把action_father中需要传递的值输出到一个parameter或者DataTable,然后让action_son去读它即可,不过如果是需要传递一个对象该怎么办?RunAction的参数传递不同于Call function,RunAction传递的参数都是默认按照次序放到action_son的Parameter列表里去的,这样只是传递了值而没有传递对象。
希望高手指教,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-5-3 10:22:07 | 只看该作者
第一种方法:如果想通过参数来直接传递对象可能实现不了,但是可以绕个弯,在参数中传递的是测试对象字符串,例如Window('ABC').WinEdit('efg'),然后在读取参数的Action中使用如下方法构建出真正的对象:
Dim TestObj ,QTPClass,DPID
' 从环境变量或其它地方读入测试对象信息
QTPClass = Environment.Value("QTPClass")
DPID =  Environment.Value("DPID")
' 使用Execute执行测试对象赋值语句
Execute "Set TestObj = " & QTPClass & "(" & Chr(34) & DPID & Chr(34) & ")"
' 使用测试对象
TestObj.Activate
' ...
TestObj.Close

参见http://blog.csdn.net/Testing_is_ ... /04/19/2307970.aspx

第二种方法:使用Associate Object Repository,在Son Action中的对象库添加对Father Action对象库的引用,这样就不需要传递,直接使用。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-5-3 11:28:40 | 只看该作者
谢谢2楼的解释,不过我的问题还是不能解决

可能我没有说清楚,action_father中我需要传递到action_son的对象其实是一个Excel数据读取对象,它是在action_father中定义的
//action_father
Set myfile = ExcelConnect(DataTable("FilePath",dtGlobalSheet),sheetname)
//ExcelConnect是我自定义的方法,返回excel文件中sheetname的头指针
While Not myfile.EOF
        If ***** Then
                myfile.MoveNext
        else
                RunAction "action_son",oneIteration
                myfile.MoveNext
这里其实我希望把myfile这个对象传递到action_son中去,问题就是怎么传递,貌似只能值传递?

如果用Associate Object Repository的话,对象库里面根本就没有自己定义的对象,可以把自己定义的对象上传到对象库里面么?

我把ExcelConnect方法也贴出来:
Public Function ExcelConnect(Filepath,sheetname)
   Dim conn,input,cmd
   Set conn= createobject("ADODB.Connection")
   conn.Open "rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False;Data Source="&Filepath&";Extended Properties='Excel 8.0;hdr=yes'"
   Set input= createobject("ADODB.Recordset")
   cmd = "select * from ["+sheetname+"$]"
   input.Open cmd,conn
   Set ExcelConnect = input
End Function

还请大家指教,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-5-3 14:07:42 | 只看该作者
要传递对象,貌似只能在vbs文件中才能实现了~~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-28 01:29 , Processed in 0.072103 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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