Java >> Java Tutorial >  >> Java

Hinzufügen von Eingabe- und Ausgabeparametern zu TestProject-Aktionen

Wenn wir TestProject-Add-Ons in einem echten Softwareprojekt verwenden, stehen die Chancen gut, dass wir Aktionen schreiben wollen, die Input haben und Ausgangsparameter. Dieser Blogbeitrag hilft uns, dieses Problem zu lösen.

Nachdem wir diesen Blogbeitrag fertiggestellt haben, werden wir:

  • Wissen, wie wir Eingabe- und Ausgabeparameter zu TestProject-Aktionen hinzufügen können.
  • Verstehen, wie wir eine TestProject-Aktion mit Eingabeparametern schreiben können.
  • Kann eine TestProject-Aktion schreiben, die Ausgabeparameter hat.

Beginnen wir damit herauszufinden, wie wir Eingabe- und Ausgabeparameter zu TestProject-Aktionen hinzufügen können.

Eingabe- und Ausgabeparameter zu einer TestProject-Aktion hinzufügen

Wenn wir einer TestProject-Aktion einen Eingabe- oder Ausgabeparameter hinzufügen möchten, müssen wir die folgenden Schritte ausführen:

Zuerst , müssen wir einen private hinzufügen Feld zu unserer Aktionsklasse. Dieses Feld enthält den Wert unseres Eingabe- oder Ausgabeparameters.

Zweiter , müssen wir unser Feld mit dem @Parameter annotieren Anmerkung. Diese Anmerkung hat drei Attribute, mit denen wir unseren Parameter konfigurieren können. Diese Attribute sind:

  • Die description Das Attribut enthält die Beschreibung unseres Parameters.
  • Die direction Das Attribut gibt die Richtung unseres Parameters an. Wenn wir einen Eingabeparameter erstellen möchten, muss der Wert dieses Attributs sein:ParameterDirection.INPUT . Dies ist auch der Standardwert dieses Attributs. Wenn wir dagegen einen Ausgabeparameter erstellen möchten, muss der Wert dieses Attributs sein:ParameterDirection.OUTPUT .
  • Der defaultValue -Attribut enthält den Standardwert unseres Parameters.

Als Nächstes sehen wir uns zwei Beispiele an, die zeigen, wie wir einer Aktionsklasse einen Eingabe- und einen Ausgabeparameter hinzufügen können.

Beispiel 1:

Nachdem wir unserer Aktionsklasse einen Eingabeparameter hinzugefügt haben, sieht sein Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.annotations.v2.Parameter;
import io.testproject.java.sdk.v2.addons.WebAction;

@Action(name = "This action has a parameter")
public class ParameterAction implements WebAction {

 @Parameter(description = "Contains the value of our input parameter",
 defaultValue = "Hello Action!"
 )
 private String inputParameter;
}

Beispiel 2:

Nachdem wir unserer Aktionsklasse einen Ausgabeparameter hinzugefügt haben, sieht sein Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.annotations.v2.Parameter;
import io.testproject.java.enums.ParameterDirection;
import io.testproject.java.sdk.v2.addons.WebAction;

@Action(name = "This action has a parameter")
public class ParameterAction implements WebAction {

 @Parameter(description = "Contains the value of our output parameter",
 direction = ParameterDirection.OUTPUT,
 defaultValue = "Hello World!"
 )
 private String outputParameter;
}

Wir können unseren Aktionsklassen jetzt Eingabe- und Ausgabeparameter hinzufügen. Lassen Sie uns weitermachen und herausfinden, wie wir TestProject-Aktionen schreiben können, die Eingabe- und Ausgabeparameter verwenden.

TestProject-Aktionen schreiben, die Eingabe- und Ausgabeparameter verwenden

Zuvor haben wir eine benutzerdefinierte TestProject-Aktion geschrieben, die das gefundene Suchfeld aus der Seitenleiste meines Blogs löscht. Als nächstes schreiben wir zwei Aktionen, die uns helfen, Tests für die Suchfunktion zu schreiben. Wir können diese Aktionen schreiben, indem wir diesen Schritten folgen:

Zuerst , müssen wir eine Aktion schreiben, die den angegebenen Suchbegriff in das Suchfeld eingibt und das Suchformular absendet. Wir können diese Aktion schreiben, indem wir diesen Schritten folgen:

  1. Erstellen Sie eine neue Aktionsklasse und konfigurieren Sie den Namen der erstellten Aktion.
  2. Fügen Sie einen neuen Eingabeparameter namens searchTerm hinzu zu unserer Aktionsklasse.
  3. Implementieren Sie execute() Methode. Unsere Implementierung gibt einfach den Suchbegriff in das Suchfeld ein und sendet das Suchformular ab.

Nachdem wir unsere Actions-Klasse implementiert haben, sieht ihr Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.annotations.v2.Parameter;
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 org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

@Action(name = "Enter the search term and submit the search form")
public class BlogSearchAction implements WebAction {

 @Parameter(description = "Contains the submitted search term")
 private String searchTerm;

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

 WebElement searchField = browser.findElement(By.id("s"));
 if (!searchField.isDisplayed()) {
 return ExecutionResult.FAILED;
 }

 searchField.sendKeys(searchTerm);
 searchField.sendKeys(Keys.ENTER);

 return ExecutionResult.PASSED;
 }
}

Zweiter , müssen wir eine Aktion schreiben, die die Anzahl der auf der Suchergebnisseite gefundenen Suchergebnisse zählt (und zurückgibt). Wir können diese Aktion schreiben, indem wir diesen Schritten folgen:

  1. Erstellen Sie eine neue Aktionsklasse und konfigurieren Sie den Namen der erstellten Aktion.
  2. Fügen Sie einen neuen Ausgabeparameter namens actualSearchResultCount hinzu zu unserer Aktionsklasse.
  3. Implementieren Sie den execute() Methode. Unsere Implementierung zählt die Anzahl der auf der Suchergebnisseite gefundenen Suchergebnisse und speichert diesen Wert in actualSearchResultCount Feld.

Nachdem wir unsere Actions-Klasse implementiert haben, sieht ihr Quellcode wie folgt aus:

import io.testproject.java.annotations.v2.Action;
import io.testproject.java.annotations.v2.Parameter;
import io.testproject.java.enums.ParameterDirection;
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 org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import java.util.List;

@Action(name = "Finds the number of search results")
public class BlogSearchResultFinderAction implements WebAction {

 @Parameter(description = "Contains the number of actual search results",
 direction = ParameterDirection.OUTPUT
 )
 private long actualSearchResultCount;

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

 List<WebElement> searchResults = browser.findElements(
 By.cssSelector(".template-search .content .post_box")
 );
 actualSearchResultCount = searchResults.size();

 return ExecutionResult.PASSED;
 }
}

Wir haben jetzt zwei Aktionsklassen geschrieben, die Eingabe- und Ausgabeparameter haben. Fassen wir zusammen, was wir aus diesem Blogbeitrag gelernt haben.

Zusammenfassung

Dieser Blogpost hat uns drei Dinge gelehrt:

  • Wir können unsere Parameterwerte in private speichern Felder, die zu unseren Aktionsklassen hinzugefügt werden.
  • Wenn wir den Typ des Parameterfelds angeben, müssen wir entweder primitive Typen oder primitive Wrapper-Klassen verwenden.
  • Wir können unsere Eingabe- und Ausgabeparameter konfigurieren, indem wir das entsprechende Feld mit dem @Parameter annotieren Anmerkung.

Java-Tag