51Testing软件测试论坛

标题: 如何在子action中使用父action的对象? [打印本页]

作者: f84248860    时间: 2008-5-3 09:20
标题: 如何在子action中使用父action的对象?
如题,在一个action(action_father)中使用RunAction来运行另一个action(action_son),怎么样在这个action_son中调用action_father里的对象?
这里面如果是值传递的话可以解决,只要把action_father中需要传递的值输出到一个parameter或者DataTable,然后让action_son去读它即可,不过如果是需要传递一个对象该怎么办?RunAction的参数传递不同于Call function,RunAction传递的参数都是默认按照次序放到action_son的Parameter列表里去的,这样只是传递了值而没有传递对象。
希望高手指教,谢谢!
作者: 陈能技    时间: 2008-5-3 10:22
第一种方法:如果想通过参数来直接传递对象可能实现不了,但是可以绕个弯,在参数中传递的是测试对象字符串,例如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对象库的引用,这样就不需要传递,直接使用。
作者: f84248860    时间: 2008-5-3 11:28
谢谢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

还请大家指教,谢谢!
作者: hsjzfling    时间: 2008-5-3 14:07
要传递对象,貌似只能在vbs文件中才能实现了~~




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