水煮肉片 发表于 2009-9-15 22:39:50

QTP能识别SAP开发的系统中的对象么

最近接触到了SAP开发的系统,用QTP录制的时候,总是识别不到对象

1.低端录制可以解决么
2.必须安装SAP的插件么
3.插件太贵,低端录制回放时的条件过于苛刻。有不用上面两个方法的方案么

guoyang8013 发表于 2009-9-16 10:15:44

必须用插件的。。。我测过相关项目。在9.5的安装包里就有。不知道你的盗版里面有没有,你装装看,看有没有

水煮肉片 发表于 2009-9-16 17:50:56

谢谢了 呵呵 我找找吧:)

GeorgeWangLC 发表于 2009-9-17 17:09:45

虽然没接触到纯正的SAP,学习啦,要顶下!

假装不在 发表于 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")
        msgboxoline.RowCount
        msgbox oline.value(1,1)
End If

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

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

假装不在 发表于 2009-9-17 17:19:17

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

BENFMG 发表于 2009-11-9 18:00:53

LZ好强。。。。
我也在看相关的东西,往后请教你们。。。

zhutao 发表于 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

vilsonyiluo 发表于 2011-3-30 16:07:54

很好,学习了
页: [1]
查看完整版本: QTP能识别SAP开发的系统中的对象么