Nach SAP-Testobjekten (TestObjects) suchen

Functional Tester bietet durch manuelle Scripterstellung auch ohne Verwendung der Objektübersicht Unterstützung für die Suche nach einem oder mehreren Testobjekten (TestObjects), die den angegebenen Suchkriterien entsprechen.

Functional Tester bietet auch Unterstützung für ein Stammtestobjekt (RootTestObject), über das ein umfassender Überblick über die getestete Software möglich ist. Zum Aktivieren der SAP-Anwendung für Tests müssen Sie die entsprechende Suchmethode enableForTesting für das Stammtestobjekt RootTestObject aufrufen. Möchten Sie eine globale Suche ausführen, müssen Sie die entsprechende Suchmethode für das Stammtestobjekt (RootTestObject) aufrufen. Gültige Werte für das subitem-Element, das dem ersten Argument der Suchmethode entspricht, lauten atProperty, atChild, atDescendant und atList. Es gibt bestimmte Eigenschaften, die sich auf RootTestObject.find beziehen. Dazu gehören .processName, .processID und .domain. Sie können alle genannten subitem-Elemente und Eigenschaften verwenden. So können Sie beispielsweise das subitem-Element atChild mit der Eigenschaft ".domain" auf SAP gesetzt verwenden, um die SAP-Domäne zu suchen.

Anmerkung: Weitere Informationen zur Laufzeithistorie der grafischen Benutzerschnittstelle von SAP finden Sie in der Dokumentation "SAP GUI Script Framework".

Sobald das SAP-Testobjekt der höchsten Ebene gefunden und zurückgegeben wurde, können Sie das Objekt verwenden, um verschiedene Objekte der Laufzeithierarchie der grafischen Benutzerschnittstelle von SAP zu suchen. Beispiel:

Nachdem Sie das aktive Fensterobjekt abgerufen haben, können Sie die Methode GetChildren auf das zu suchende Hauptfenster-Testobjekt anwenden und mit verschiedenen Objekten im GuiMainWindow interagieren.

Unten ist ein Beispiel dafür aufgeführt, wie Sie Benutzerinteraktionen mit Objekten in der SAP-Anwendung ausführen können. Der Mustercode lautet folgendermaßen:

  1. Aktiviert die SAP-Anwendung für Tests
  2. Gibt das SAP-Testobjekt zurück, das das Fenster darstellt
  3. Verwendet dieses Objekt, um die Schaltfläche Create Role (Rolle erstellen) in der SAP-Symbolleiste zu suchen, deren Eigenschaft für den Schaltflächennamen auf btn[48] eingestellt ist.
  4. Klickt auf die Schaltfläche Create Role (Rolle erstellen)

Beispiel:

#Region " Script Header "
' Functional Test Script
' author Administrator

 Imports Microsoft.VisualBasic
Imports Rational.Test.Ft
Imports Rational.Test.Ft.Object.Interfaces
Imports Rational.Test.Ft.Object.Interfaces.SAP
Imports Rational.Test.Ft.Object.Interfaces.Siebel
Imports Rational.Test.Ft.Script
Imports Rational.Test.Ft.Value
Imports Rational.Test.Ft.Vp
#End Region

Public Class HandCodingWithEnablement 
    Inherits HandCodingWithEnablementHelper

    'Script Name   : HandCodingWithEnablement
    'Generated     : Sep 5, 2006 10:53:54 AM
    'Description   : Functional Test Script
    'Original Host : Windows XP x86 5.1 build 2600 Service Pack 2 

    'since  2006/09/05
    'author Administrator

    Public Function TestMain(ByVal args() As Object) As Object
        Dim sapApps() As TestObject
        Dim app As SAPTopLevelTestObject
        Dim theAPP As SAPGuiApplicationTestObject
        Dim cons() As TestObject
        Dim sessions() As TestObject
        Dim con As SAPGuiConnectionTestObject
        Dim sess As SAPGuiSessionTestObject
        Dim mainWnd As SAPTopLevelTestObject
        Dim wndChild() As TestObject
        Dim btns() As TestObject
        Dim btn As SAPGuiToggleTestObject
        Dim i, j As Integer
        Dim Len1, Len2 As Integer

        ' Searching for SAP Test Objects through Scripting 

        ' This enables SAP to be tested by Functional Tester and 
        ' returns all top-level test objects in the SAP domain
        GetRootTestObject().EnableForTesting("sapLogon")
        sapApps = GetRootTestObject().Find(AtChild(".domain", "SAP"))

        ' Get a handle to the SAP Application from the top-level SAP object
        If (sapApps.GetLength(0) > 0) Then
            app = sapApps(0)
            theAPP = app.GetApplication
            LogInfo("Application Number:" + theAPP.GetProperty("Id"))

            ' Get a handle to the SAP Connection from the SAP Application Test object
            cons = theAPP.GetProperty("Connections")
            con = cons(0)
            LogInfo("Connection Number:" + con.GetProperty("Id"))

            ' Get a handle to the SAP Session from the SAP Connection Test Object
            sessions = con.GetProperty("Sessions")
            sess = sessions(0)
            LogInfo("Session Number:" + sess.GetProperty("Id"))

            ' Get a handle to the SAP Main Window from the SAP Session Test Object
            ' and iterate over its children till the desired object is found
            mainWnd = sess.GetProperty("ActiveWindow")
            wndChild = mainWnd.GetChildren()

            Len1 = wndChild.GetLength(0) - 1
            For i = 0 To Len1
                Dim name As String = wndChild(i).GetProperty("Name")
                If (name.CompareTo("tbar[1]") = 0) Then
                    btns = wndChild(i).GetChildren
                    Len2 = btns.GetLength(0) - 1
                    For j = 0 To Len2
                        Dim btnType As String = btns(j).GetProperty("Type")
                        If (btnType.CompareTo("GuiButton") = 0) Then
                            btn = CType(btns(j), SAPGuiToggleTestObject)
                            Dim btnName As String = btn.GetProperty("Name")
                            If (btnName.CompareTo("btn[48]") = 0) Then
                                ' Click on the "Create Role" button ("btn[48]") placed on the toolbar("tbar[1]")
                                btn.Press()
                                LogInfo("Clicked on the Create Role button")
                                Return Nothing
                            End If
                        End If
                    Next j
                End If
            Next i
        Else
             LogInfo("SAP Application not found")
        End If
        
    Return Nothing
    End Function

End Class

Wenn die SAP-Anwendung bereits aktiviert ist, müssen Sie die SAP-Anwendung nicht mehr explizit für Tests aktivieren. Stattdessen können Sie den folgenden Code für die Suche nach der aktivierten SAP-Anwendung verwenden.

Dim domains As DomainTestObject()
      Dim domain As DomainTestObject
      Dim sapApps() As TestObject
      Dim name As String
      Dim domainsCount As Integer
      Dim i As Integer

	domains = GetDomains()
      domainsCount = domains.GetLength(0) - 1
      For i = 0 To domainsCount
          domain = domains(i)
          name = domain.GetName()
          If (name.CompareTo("SAP") = 0) Then                
              ' Returns all top-level test objects in the SAP domain
              sapApps = domain.GetTopObjects

		' Perform user interactions with the SAP objects				                
          End If
      Next i

Feedback