Java >> Java Tutorial >  >> Java

Schreiben von Add-Ons mit TestProject

Nachdem wir einige Testfälle mit dem TestProject-Framework geschrieben haben, ist es wahrscheinlich, dass wir doppelten Code identifizieren können, der geteilt wird durch mehrere Testklassen. Dieser Blogbeitrag beschreibt, wie wir doppelten Code aus unserer Testsuite entfernen können, indem wir benutzerdefinierte TestProject-Add-Ons schreiben.

Nachdem wir diesen Blogbeitrag fertiggestellt haben, werden wir:

  • Wissen Sie, was ein TestProject-Addon ist.
  • Kann ein benutzerdefiniertes TestProject-Addon implementieren.
  • Wissen, wie wir unser Addon auf die Website app.testproject.io hochladen können.
  • Kann unser Addon mit der TestProject-Community teilen.

Beginnen wir mit einem kurzen Blick auf die TestProject-Add-Ons.

Was ist ein Addon?

Ein Addon ist eine Sammlung von Aktionen, die nützliche Funktionen für Testfälle bereitstellen. Beispielsweise könnte eine Aktion alle Felder eines Formulars löschen oder einen Benutzer bei der getesteten Website anmelden. Ein Testfall kann Addons verwenden, die auf der Website app.testproject.io veröffentlicht sind.

Da Add-ons mit verschiedenen Projekten und verschiedenen Organisationen gemeinsam genutzt werden können, haben sie keinen uneingeschränkten Zugriff auf das Hostsystem, auf dem der TestProject-Agent ausgeführt wird. Wenn ein TestProject-Agent ein Addon ausführt, erzeugt es einen separaten Prozess, der eingeschränkten Zugriff auf das Hostsystem und die Außenwelt hat. Wenn die Standardberechtigungen für ein Addon nicht ausreichen, kann es diese Berechtigungen anfordern:

  • Das Dateisystem -Berechtigung ermöglicht dem Add-on den Zugriff auf das Dateisystem des Hostsystems, auf dem der TestProject-Agent ausgeführt wird. Liest das Addon beispielsweise die verwendeten Testdaten aus einer Datei aus, benötigt es diese Berechtigung.
  • Die ADB Berechtigung erlaubt dem Add-on, mit Android-Geräten zu kommunizieren, indem es das Android Debug Bridge-Tool verwendet.
  • Das Netzwerk Berechtigung erlaubt dem Addon, mit der Außenwelt zu kommunizieren. Wenn das Addon beispielsweise die verwendeten Testdaten durch Aufrufen einer REST-API erhält, benötigt es diese Berechtigung. Wenn das Add-On jedoch nur die Selenium-API verwendet, ist diese Berechtigung nicht erforderlich.
  • Die Env Berechtigung ermöglicht dem Addon den Zugriff auf die Umgebungsvariablen des Hostsystems, auf denen der TestProject-Agent ausgeführt wird.

Wir sind jetzt mit den Grundlagen vertraut. Als nächstes werden wir herausfinden, wie wir ein benutzerdefiniertes TestProject-Addon implementieren können.

Implementieren unseres Add-ons

Während dieses Blogbeitrags werden wir ein Addon implementieren, das eine Aktion hat, die das Suchfeld aus der Seitenleiste meines Blogs löscht. Das HTML-Markup des Suchformulars sieht folgendermaßen aus:

<form class="search_form" 
 method="get" 
 action="https://www.petrikainulainen.net">
 <p>
 <input class="input_text" 
 type="text" 
 id="s" 
 name="s" 
 value="enter search term and press enter">
 <input type="hidden" id="searchsubmit" value="Search">
 </p>
</form>

Wir können unsere Aktion schreiben, indem wir diesen Schritten folgen:

Zuerst , müssen wir eine neue Klasse erstellen, die den Quellcode unserer Aktion enthält. Wie wir uns erinnern, muss eine Aktionsklasse eine Schnittstelle implementieren, die die Zielplattform der Aktion identifiziert. Da wir eine Webaktion schreiben, können wir unsere Aktionsklasse folgendermaßen erstellen:

  1. Erstellen Sie einen public Klasse, die WebAction implementiert Schnittstelle.
  2. Kommentieren Sie die erstellte Klasse mit dem @Action Anmerkung und geben Sie den Namen unserer Aktion an.
  3. Fügen Sie einen execute() hinzu -Methode auf die erstellte Klasse. Diese Methode benötigt WebAddonHelper Objekt als Methodenparameter und gibt einen ExecutionResult zurück Aufzählung.

Nachdem wir unsere Aktionsklasse erstellt haben, sieht ihr Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.sdk.v2.addons.WebAction;
import io.testproject.java.sdk.v2.addons.helpers.WebAddonHelper;
import io.testproject.java.sdk.v2.enums.ExecutionResult;
import io.testproject.java.sdk.v2.exceptions.FailureException;

@Action(name = "Clear the search field of the search form")
public class ClearBlogSearchFieldAction implements WebAction {

 @Override
 public ExecutionResult execute(WebAddonHelper webAddonHelper) 
 throws FailureException {

 }
}

Zweiter , müssen wir den execute() implementieren Methode des WebAction Schnittstelle, indem Sie diesen Schritten folgen:

  1. Holen Sie sich einen Verweis auf den verwendeten WebDriver Objekt.
  2. Suchen Sie das Suchfeldelement anhand seiner ID (s ) als Suchkriterium.
  3. Wenn das Suchfeldelement nicht sichtbar ist, melden Sie den Grund für das Fehlschlagen des Tests und bestehen Sie den Test, indem Sie ExecutionResult.FAILED zurückgeben .
  4. Wenn das Suchfeldelement sichtbar ist, löschen Sie seinen Wert und geben Sie ExecutionResult.PASSED zurück . Dieser Rückgabewert stellt sicher, dass der TestProject-Agent die Ausführung des aufgerufenen Tests fortsetzt.

Nachdem wir den execute() implementiert haben -Methode sieht der Quellcode unserer Aktionsklasse wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.sdk.v2.addons.WebAction;
import io.testproject.java.sdk.v2.addons.helpers.WebAddonHelper;
import io.testproject.java.sdk.v2.drivers.WebDriver;
import io.testproject.java.sdk.v2.enums.ExecutionResult;
import io.testproject.java.sdk.v2.exceptions.FailureException;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

@Action(name = "Clear the search field of the search form")
public class ClearBlogSearchFieldAction implements WebAction {

 @Override
 public ExecutionResult execute(WebAddonHelper webAddonHelper)
 throws FailureException {
 WebDriver browser = webAddonHelper.getDriver();

 WebElement searchField = browser.findElement(By.id("s"));
 if (!searchField.isDisplayed()) {
 webAddonHelper.getReporter()
 .result("No input field was found with the id: s");
 return ExecutionResult.FAILED;
 }

 searchField.clear();
 return ExecutionResult.PASSED;
 }
}

Wir haben nun die einzige Aktion unseres Addons implementiert. Als nächstes müssen wir ein neues Addon auf der Website app.testproject.io erstellen.

Ein neues Add-on erstellen

Wir können ein neues Addon erstellen, indem wir diesen Schritten folgen:

Zuerst , müssen wir die Seite „Addons“ öffnen, indem wir auf den Link „Addons“ klicken, den Sie in der Hauptnavigationsleiste der Website finden.

Die folgende Abbildung zeigt die Position des Links „Addons“:

Zweiter , müssen wir den Assistenten zum Erstellen von Addons starten, indem wir auf den Link „Addon erstellen“ klicken.

Die folgende Abbildung zeigt die Position des Links „Add-on erstellen“:

Nachdem wir den Assistenten zum Erstellen von Addons gestartet haben, müssen wir ihn wie folgt beenden:

Zuerst , müssen wir die allgemeinen Informationen des Addons angeben. Das allgemeine Informationsformular enthält die folgenden Felder:

  • Der Name des Addons.
  • Eine optionale Beschreibung des Addons.
  • Ein optionaler Link, der auf eine Seite verweist, die es einem Entwickler ermöglicht, den Quellcode unseres Add-Ons herunterzuladen.
  • Ein optionaler Link, der auf die Dokumentation unseres Addons verweist.
  • Optionale Tags des Addons. Diese Tags ermöglichen es uns, verwandte Add-Ons zu gruppieren.

Nachdem wir diese Informationen bereitgestellt haben, können wir mit dem nächsten Schritt dieses Assistenten fortfahren, indem wir auf die Schaltfläche „Weiter“ klicken.

Die folgende Abbildung veranschaulicht diesen Schritt:

Zweiter , müssen wir die Berechtigungen unseres Addons festlegen, indem Sie diesen Schritten folgen:

  1. Geben Sie die Berechtigungen an, indem Sie auf die entsprechenden Kontrollkästchen klicken. Da unser Addon nur die Selenium-API verwendet, sind keine zusätzlichen Berechtigungen erforderlich.
  2. Laden Sie die manifest.json herunter Datei, indem Sie auf die Schaltfläche „Manifest generieren und herunterladen“ klicken. Diese Datei muss in der JAR-Datei enthalten sein, die unsere Aktionsklassen enthält.
  3. Fahren Sie mit dem nächsten Schritt dieses Assistenten fort, indem Sie auf die Schaltfläche "Weiter" klicken.

Die folgende Abbildung veranschaulicht diesen Schritt:

Dritter , müssen wir die heruntergeladene manifest.json einbinden Datei in der JAR-Datei, die unsere Aktionsklassen enthält. Wir können dies tun, indem wir diesen Schritten folgen:

  1. Verschieben Sie die manifest.json Datei in src/main/resources Verzeichnis unseres Addon-Projekts.
  2. Packen Sie das Addon, indem Sie den folgenden Befehl ausführen:gradle clean build im Stammverzeichnis unseres Addon-Projekts.

Vierter , müssen wir die erstellte JAR-Datei auf die Website app.testproject.io hochladen, indem wir die folgenden Schritte ausführen:

  1. Ziehen Sie die JAR-Datei in den Upload-Bereich des modalen Dialogs.
  2. Klicken Sie auf die Schaltfläche "Datei hochladen".

Die folgende Abbildung veranschaulicht diesen Schritt:

Fünfter , müssen wir die in der hochgeladenen JAR-Datei gefundenen Aktionen überprüfen. Wenn die Aktionsliste alle Aktionen enthält und die erforderliche SDK-Version korrekt ist, können wir unser Add-On erstellen und es mit unserem Team teilen, indem Sie auf die Schaltfläche „Fertig stellen“ klicken.

Die folgende Abbildung veranschaulicht diesen Schritt:

Wir haben unser Addon nun auf die Website app.testproject.io hochgeladen und mit unserem Team geteilt. Es besteht jedoch die Möglichkeit, dass wir unser Addon aktualisieren oder es mit den Mitgliedern der TestProject-Community teilen möchten. Fahren wir fort und finden heraus, wie wir unsere Addons verwalten können.

Verwaltung unserer Add-Ons

Wenn wir unser Addon verwalten wollen, müssen wir diese Schritte befolgen:

Zuerst , müssen wir die Seite „Addons“ öffnen, indem wir auf den Link „Addons“ klicken, den Sie in der Hauptnavigationsleiste der Website finden.

Die folgende Abbildung zeigt die Position des Links „Addons“:

Zweiter , müssen wir die Seite „Meine Addons“ öffnen, indem wir auf den Link „Meine Addons“ klicken, den Sie in der Seitenleiste der Seite „Addons“ finden.

Die folgende Abbildung zeigt die Position des Links „Meine Addons“:

Dritter , müssen wir den modalen Dialog öffnen, der es uns ermöglicht, unser Addon zu verwalten. Wir können dies tun, indem wir auf das HTML-Element klicken, das die Informationen des verwalteten Add-Ons anzeigt.

Die folgende Abbildung veranschaulicht diesen Schritt:

Vierter , können wir die bevorzugte Operation mit einer dieser drei Optionen ausführen:

  • Wenn wir unser Addon mit den anderen Mitgliedern der TestProject-Community teilen möchten, müssen wir auf die Schaltfläche „Jetzt teilen“ klicken. Diese Schaltfläche öffnet einen modalen Dialog, der bestätigt, dass wir unser Addon mit der TestProject-Community teilen möchten.
  • Wenn wir eine neue Version unseres Addons hochladen möchten, müssen wir auf die Schaltfläche „Neue Version hochladen“ klicken. Diese Schaltfläche startet den Assistenten zum Hochladen einer neuen Version. Ich werde diesen Assistenten in diesem Blogbeitrag nicht beschreiben, da er fast identisch mit dem Assistenten zum Erstellen von Addons ist.
  • Wenn wir die allgemeinen Informationen unseres Addons aktualisieren möchten, laden Sie die manifest.json herunter Datei, ein Proxy-Jar herunterladen oder unser Addon löschen, müssen wir auf das Symbol „Mehr“ (drei Punkte übereinander) klicken.

Die folgende Abbildung veranschaulicht unsere Optionen:

Wir haben unser Addon nun implementiert und auf die Website app.testproject.io hochgeladen. Außerdem wissen wir, wie wir unsere Addons verwalten können. Fassen wir zusammen, was wir aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

Dieser Blogbeitrag hat uns sieben Dinge beigebracht:

  • Ein Addon ist eine Komponente, die nützliche Funktionen für Testfälle bietet.
  • Da Add-Ons mit verschiedenen Projekten und verschiedenen Organisationen geteilt werden können, haben sie keinen uneingeschränkten Zugriff auf das Hostsystem, auf dem der TestProject-Agent ausgeführt wird.
  • Wenn die Standardberechtigungen für ein Add-On nicht ausreichen, kann es zusätzliche Berechtigungen anfordern.
  • Ein Addon ist eine Sammlung von Aktionen.
  • Eine Aktionsklasse muss eine Schnittstelle implementieren, die die Zielplattform der Aktion identifiziert.
  • Wenn wir eine Webaktion schreiben wollen, muss unsere Aktionsklasse den WebAction implementieren Schnittstelle.
  • Wenn unsere Aktion den aufgerufenen Test nicht besteht, sollten wir immer den Grund für das Fehlschlagen des Tests melden, indem wir den ActionReporter verwenden Klasse.

Java-Tag