51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4284|回复: 8
打印 上一主题 下一主题

[原创] QTP能识别SAP开发的系统中的对象么

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-15 22:39:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近接触到了SAP开发的系统,用QTP录制的时候,总是识别不到对象

1.低端录制可以解决么
2.必须安装SAP的插件么
3.插件太贵,低端录制回放时的条件过于苛刻。有不用上面两个方法的方案么
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-9-16 10:15:44 | 只看该作者
必须用插件的。。。我测过相关项目。在9.5的安装包里就有。不知道你的盗版里面有没有,你装装看,看有没有
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-9-16 17:50:56 | 只看该作者
谢谢了 呵呵 我找找吧
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-9-17 17:09:45 | 只看该作者
虽然没接触到纯正的SAP,学习啦,要顶下!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-9-17 17:15:41 | 只看该作者
SAP提供了自己的API给做自动化的测试员用,所以不一定要使用QTP的插件。只是自己开发费用比较高。还有维护。
SAP提供了包括VBA,VBS,JAVA,.NET等等的接口。
Function CallSAPFUNC()
Dim oConnection As Object
Dim ofun As Object
Dim func As Object
Set ofun = CreateObject("SAP.FUNCTIONS") ' FUNCTION NAME
Set ofun.Connection = oConnection
Set func = ofun.Add("RFC_READ_TABLE")
func.Exports("QUERY_TABLE") = "CSKT" ' TABLE NAME
If func.Call = True Then
Set oline = func.Tables.Item("DATA")
Row = oline.RowCount
Sheet2.Cells(1, 1) = "0000"
Sheet2.Cells(1, 2) = "??"
Sheet2.Cells(1, 3) = "????"
Sheet2.Cells(1, 4) = "?"
Sheet2.Cells(1, 5) = "?????"
Sheet2.Cells(1, 6) = "????"
Sheet2.Cells(1, 7) = "0"
Sheet2.Cells(1, 8) = "??"
i = 2
Do While i <= 100
Sheet2.Cells(i, 1) = Mid(Trim(oline.Value(i, 1)), 1, 3)
Sheet2.Cells(i, 2) = Mid(Trim(oline.Value(i, 1)), 4, 1)
Sheet2.Cells(i, 3) = Mid(Trim(oline.Value(i, 1)), 5, 4)
Sheet2.Cells(i, 4) = Mid(Trim(oline.Value(i, 1)), 9, 10)
Sheet2.Cells(i, 5) = Mid(Trim(oline.Value(i, 1)), 19, 8)
Sheet2.Cells(i, 6) = Mid(Trim(oline.Value(i, 1)), 27, 20)
Sheet2.Cells(i, 7) = Mid(Trim(oline.Value(i, 1)), 47, 40)
Sheet2.Cells(i, 8) = Mid(Trim(oline.Value(i, 1)), 87, 26)
i = i + 1
Loop
End If
ll = MsgBox("END PROCESS", , "END")
End Function

如何创建OBJECT
Set ctlLogon = CreateObject("SAP.LogonControl.1")
Set funcControl = CreateObject("SAP.Functions")
Set ctlTableFactory = CreateObject("SAP.TableFactory.1")
Set objSession = CreateObject("MAPI.Session")

你可以使用这些东西去获取已经打开的SAP 程序,然后开始对它做操作。

如何获取SAP 数据

Dim SapGuiAuto
Dim application
Dim connection
  Set SapGuiAuto = GetObject("SAPGUI")
  Set application = SapGuiAuto.GetScriptingEngine
Set connection = application.Children(0)
Set session = connection.Children(0)
Set ofun = CreateObject("SAP.FUNCTIONS") '
Set ofun.Connection = connection
Set func = ofun.Add("RFC_READ_TABLE")
func.Exports("QUERY_TABLE") = "CSKT"
If func.call=true Then
        Set oline = func.Tables.Item("Data")
        msgbox  oline.RowCount
        msgbox oline.value(1,1)
End If

这些东西因为之前项目正好在做SAP,我比较不安分,研究了点点东西,和你share这些,希望对你有帮助。这些代码比较原汁原味,你在里面提取对你有用的信息吧。如果你想了解更多...::yxiao:::

顺便提及一下,如果你想让你们头头觉得你是牛人,你就把代码写成宏,然后自己加密,或者自己做DLL~~加密...哈哈,让他们饮水思源。::yiwusuoyou:::
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-9-17 17:19:17 | 只看该作者
SAP的程序是一层一层下来的。
一个desktop可以同时开多个SAP程序,所以就有多个SAP session,只要你获取到其中一个session,你就可以通过类似findById的方法去获取到你想要的控件。和DOM差不多,你先获取到IE然后在QTP里面做操作一样。
自然它也有自己的属性,你需要和你们的开发拿一份SAP的开发API,对你有很巨大的帮助。因为你可以查到这个对象有什么方法,什么属性给你用。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-11-9 18:00:53 | 只看该作者
LZ好强。。。。
我也在看相关的东西,往后请教你们。。。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-8-21 23:13:28 | 只看该作者
在qtp 9.5就提供了专门支持SAP的add-in,不过,如果使用需要相应的license. 另外你可以借助SAP TAO这个工具来更快录制sap对象,具体的使用你可以参考这个blog:

http://blog.sina.com.cn/s/articlelist_1656290355_2_1.html
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2011-3-30 16:07:54 | 只看该作者
很好,学习了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-20 12:28 , Processed in 0.069542 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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