Komponententestaktionen überschreiben

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 6 Minuten Lesedauer
  • Ändern Sie die Testeigenschaften einer bestimmten Seitenkomponente mithilfe von HTML-Attributen, die für Automated Test Frameworkspezifisch sind.

    Vorbereitungen

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Wenn Automated Test Framework eine Komponente abruft, bestimmt es die unterstützten Interaktionen, z. B. ob es sich um eine einstellbare oder anklickbare Komponente handelt. Wenn die Komponente einstellbar ist, bestimmt Automated Test Framework den Feldtyp, der eingestellt werden kann. Wenn Automated Test Framework die Aktionen oder Feldtypen Ihrer anwenderdefinierten Komponente falsch bestimmt oder Ihre Komponente mehrere DOM-Elemente enthält, die als eine Entität behandelt werden sollten, legen Sie sie explizit mit HTML-Attributen fest, die für Automated Test Frameworkspezifisch sind.

    Mithilfe der Attribute „sn-atf-clickable“ und „sn-atf-settable“.

    Verwenden Sie die Attribute sn-atf-clickable und sn-atf-settable, um anzugeben, dass ein Element und seine untergeordneten Elemente als anwenderdefiniert anklickbare oder anwenderdefiniert festlegbare Komponente behandelt werden sollen.

    Vorbereitungen

    Erforderliche Rolle: admin

    Prozedur

    1. Öffnen Sie die benutzerdefinierte UI-Seite, die Sie testen möchten.
    2. Fügen Sie dem zu testenden Element das Attribut sn-atf -clickable oder sn-atf-settable hinzu.
      <div sn-atf-clickable="true" sn-atf-disabled id="customClickable">
      	<button id="customButton">Click me</button>
      </div>
      <div sn-atf-settable="true" id="customSettable" sn-atf-component-value="A default value">
      	<input id="customInput" value="A default value"></input>
      </div>
      Hinweis:
      Sie können entweder das Attribut sn-atf-clickable oder das Attribut sn-atf-settable verwenden, um anzugeben, ob ein Element als anwenderdefinierte anklickbare oder anwenderdefinierte festlegbare Komponente behandelt werden soll. Sie können nicht beide Attribute für dasselbe Element verwenden.
    3. Verwenden Sie entweder das Attribut sn-atf-clickable oder das Attribut sn-atf-settable.
      • sn-atf-clickable: Wenn Sie das Attribut sn-atf-clickable hinzugefügt haben, klickt ATF auf die Komponente, indem ein sn-atf-click- Ereignis an das DOM-Element mit dem Attribut sn-atf-clickable gesendet wird. Sie sollten diesem DOM-Element einen Ereignis-Listener hinzufügen (z. B. mit addEventListener) und Ihre anwenderdefinierte Klicklogik für die Komponente implementieren. Sie können mit einer anwenderdefinierten klickbaren Komponente interagieren, indem Sie den Testschritt „Komponente klicken“ verwenden.
        Tabelle : 1. Attribute klickbarer Komponenten
        Attributname Beschreibung
        sn-atf-deaktiviert Das Vorhandensein dieses optionalen Attributs (unabhängig von seinem Wert) teilt ATF mit, dass diese Komponente deaktiviert ist
        Hinweis:
        Wenn dieses Attribut fehlt, geht ATF davon aus, dass diese Komponente standardmäßig aktiviert ist.
        sn-atf-component-value Eine Zeichenfolge oder ein JSON-Objekt, die ATF den aktuellen Wert dieser Komponente mitteilt
      • sn-atf-settable: Wenn Sie das Attribut sn- atf -settable hinzugefügt haben, legt ATF den Komponentenwert fest, indem ein sn-atf-setvalue- Ereignis an das DOM-Element mit dem Attribut sn-atf-settable gesendet wird. Sie sollten diesem DOM-Element einen Ereignis-Listener hinzufügen (z. B. mit addEventListener) und Ihre anwenderdefinierte Logik zum Festlegen von Werten für die Komponente implementieren. Auf den Wert, der festgelegt werden muss, kann mit event.detail.newvaluezugegriffen werden. Das Ereignisargument wird an den Ereignishandler übergeben. Sie können mit einer anwenderdefinierten festlegbaren Komponente über den Testschritt Komponentenwerte festlegen interagieren.
        Tabelle : 2. Legbare Komponentenattribute
        Attributname Beschreibung
        sn-atf-deaktiviert Das Vorhandensein dieses optionalen Attributs (unabhängig von seinem Wert) teilt ATF mit, dass diese Komponente deaktiviert ist.
        Hinweis:
        Wenn dieses Attribut fehlt, geht ATF davon aus, dass diese Komponente standardmäßig aktiviert ist.
        sn-atf-component-value Eine Zeichenfolge oder ein JSON-Objekt, die ATF den aktuellen Wert dieser Komponente mitteilt.
        sn-atf-data-type Optionaler Feldtyp, der dem Anwender beim Erstellen eines Schritts angezeigt werden soll. Der Standardwert ist Zeichenfolge. Zum Beispiel glide_date_time, Referenz, boolescher Wert usw.
        sn-atf-data-type-params JSON-Objekt mit weiteren Datentypdetails.

    Beispiel

    //A custom clickable component
    
    <div sn-atf-clickable="true" sn-atf-disabled id="customClickable">
    	<button id="customButton">Click me</button>
    </div>
    <script>
    	var customClickableDiv = document.getElementById("customClickable");
    	customClickableDiv.addEventListener('sn-atf-click', function() {
    		document.getElementById('customButton').click();
    	});
    </script>
    //A custom settable component
    
    <div sn-atf-settable="true" id="customSettable" sn-atf-component-value="A default value">
    	<input id="customInput" value="A default value"></input>
    </div>
    <script>
    	var customSettableDiv = document.getElementById("customSettable");
    	customSettableDiv.addEventListener('sn-atf-setvalue', function(event) {
    		var newValue = event.detail.newValue;
    		document.getElementById("customInput").value = newValue;
    	});
    </script>

    Verwendung des Attributs sn-atf-class

    Verwenden Sie das Attribut sn-atf-class, um das zu verwendende JavaScript-Objekt anzugeben, das beim Testen einer benutzerdefinierten anklickbaren oder einstellbaren Komponente verwendet werden soll. Schreiben Sie ein benutzerdefiniertes JavaScript-Objekt, um die für eine benutzerdefinierte Komponente verfügbaren Testaktionen anzugeben.

    Vorbereitungen

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Testdesigner können die für eine benutzerdefinierte Komponente verfügbaren Testaktionen manuell festlegen, indem sie ein benutzerdefiniertes JavaScript-Objekt schreiben und der Komponente ein Attribut sn-atf-class zuweisen. Legen Sie den Wert des Attributs auf den Namen des JavaScript-Objekts fest, das die Komponententestaktionen enthält. Testbare benutzerdefinierte Komponenten müssen entweder anklickbar oder einstellbar sein. Diese Klassifizierung bestimmt die Funktionen und Eigenschaften, die Ihr JavaScript-Objekt benötigt. Siehe Testschritte für benutzerdefinierte UIs für Anforderungen an testbare Seitenkomponenten.

    Prozedur

    1. Öffnen Sie die benutzerdefinierte UI-Seite, die Sie testen möchten.
    2. Fügen Sie dem zu testenden Element das Attribut sn-atf-class hinzu, und legen Sie den Wert auf den Namen des JavaScript-Objekts fest, das auf der Seite eingebettet ist und die Funktionen getValue(), setValue(), Click() oder isDisabled() verarbeitet.
      <div sn-atf-class="MyClickableComponent">
          <label for="a_clickable_checkbox">MyClickableComponent</label>
          <input type="checkbox" id="a_clickable_checkbox" checked="true"/>
      </div>
    3. Erstellen Sie das im Attribut sn-atf-class angegebene JavaScript-Objekt, und fügen Sie die Funktionen und das Attribut hinzu, die erforderlich sind, um Ihre anwenderdefinierte Seitenkomponente als anklickbare oder festlegbare Seitenkomponente zu identifizieren.
      Tabelle : 3. Funktionen für anklickbare Komponenten
      Funktionsname Beschreibung
      initialisieren () Ruft die Anfangswerte der Komponente ab. Geben Sie Folgendes ein:
      $super(element, area)
      klicken () Wählt die Komponente aus. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:

      success: „true“, wenn auf die Komponente geklickt werden kann.

      Hinweis:
      Löst den intelligenten Wartemechanismus des UI-Testschritts aus.
      abrufenWert() Ruft den Wert des Elements ab. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:
      • success: „true“, wenn der Wert abgerufen wird.
      • result: der Wert der Komponente.
      istDeaktiviert () Gibt an, ob die Komponente deaktiviert ist. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:
      • success: „true“, wenn die Komponente deaktiviert ist.
      • result: „true“, wenn die Komponente deaktiviert ist.
      Tabelle : 4. Funktionen für einstellbare Komponenten
      Funktionsname Beschreibung
      initialisieren () Ruft die Anfangswerte der Komponente ab. Geben Sie Folgendes ein:
      $super(element, area)
      festlegenWert(neuerWert) Legt den Wert der Komponente fest. Siehe das zweite Beispiel unten. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:

      success: „true“, wenn die Wert festgelegt ist.

      Hinweis:
      Löst den intelligenten Wartemechanismus des UI-Testschritts aus.
      abrufenWert() Ruft den Wert des Elements ab. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:
      • success: „true“, wenn der Wert abgerufen wird.
      • result: der Wert der Komponente.
      istDeaktiviert () Gibt an, ob die Komponente deaktiviert ist. Gibt ein JSON-Objekt mit diesen Eigenschaften zurück:
      • success: „true“, wenn die Komponente deaktiviert ist.
      • result: „true“, wenn die Komponente deaktiviert ist.
      Tabelle : 5. Attribut für einstellbare Komponenten
      Attributname Beschreibung
      isSettable: wahr Identifiziert die Komponente als einstellbare Seitenkomponente.
    4. Fügen Sie beim Erstellen Ihrer benutzerdefinierten Komponente in Jelly die Tags <g2:atf_only> um das im Attribut sn-atf-class angegebenen JavaScript-Objekt hinzu.
      Diese Tags stellen sicher, dass das System das JavaScript-Objekt nur während des automatisierten Tests ausführt.

    Beispiel

    //A custom clickable component
    
    <form>
         <div sn-atf-class="MyClickableComponent">
             <label for="a_clickable_checkbox">MyClickableComponent</label>
             <input type="checkbox" id="a_clickable_checkbox" checked="true"/>
         </div>
    </form>
    <script>
    var MyClickableComponent = {
    
        // The constructor must have this signature, but you can perform additional setup after the $super(element, area) call
        initialize: function($super, element, area) {
            $super(element, area);
        },
    
        click: function() {
            document.getElementById('a_clickable_checkbox').click();
            return {success: true};
        },
    
        // The function returns an object with a result attribute of type String
        getValue: function() {
            var isChecked = document.getElementById('a_clickable_checkbox').checked ? "true" : "false";
            return {success: true, result: isChecked};
        },
    
        // The function returns an object with a result attribute of type Boolean
        isDisabled: function() {
            if (document.getElementById('a_clickable_checkbox').disabled)
                return {success: true, result: true};
    
            return {success: true, result: false};
        },
    
    };
    </script>
    //A custom settable component
    
    <form>
        <div sn-atf-class="MySettableComponent">
            <label for="a_settable_checkbox">MySettableComponent</label>
            <input type="checkbox" id="a_settable_checkbox" checked="true"/>
        </div>
    </form>
    <script>
    var MySettableComponent = {
    
        // This attribute is required for settable components
        isSettable: true,
    
        // The constructor must have this signature, but you can perform additional setup after the $super(element, area) call
        initialize: function($super, element, area) {
            $super(element, area);
        },
    
        // The value parameter is a string
        setValue: function(value) {
            document.getElementById('a_settable_checkbox').checked = (value == "true");
            return {success: true};
        },
    
        // The function returns an object with a result attribute of type String
        getValue: function() {
            var isChecked = document.getElementById('a_settable_checkbox').checked ? "true" : "false";
            return {success: true, result: isChecked};
        },
    
        // The function returns an object with a result attribute of type Boolean
        isDisabled: function() {
            if (document.getElementById('a_settable_checkbox').disabled)
                return {success: true, result: true};
    
            return {success: true, result: false};
        },
    
    };
    </script>

    Referenz- und Datensatzauswahl

    Verwenden Sie anwenderdefinierte UI-Schritte, um die Werte der Winkelanweisungen sn-reference-picker und sn-record-picker zu bearbeiten. Der Wert in einer Referenzauswahl gibt die sys_id des ausgewählten Datensatzes zurück. Der Wert in einer Datensatzauswahl gibt das für diese Datensatzauswahl ausgewählte Wertfeld zurück. Beide Elemente können festgelegt werden, indem ein Datensatz ausgewählt wird, der als Wert festgelegt werden soll.