Selenium Form WebElement: TextBox, Button, sendkeys (), click ()

Inhaltsverzeichnis:

Anonim

Formulare sind die grundlegenden Webelemente, um Informationen von den Website-Besuchern zu erhalten. Webformulare enthalten verschiedene GUI-Elemente wie Textfelder, Kennwortfelder, Kontrollkästchen, Optionsfelder, Dropdown-Listen, Dateieingaben usw.

Wir werden sehen, wie Sie mit Selenium Web Driver mit Java auf diese verschiedenen Formularelemente zugreifen können. Selen kapselt jedes Formularelement als Objekt von WebElement. Es bietet eine API, um die Elemente zu finden und Maßnahmen zu ergreifen, z. B. das Eingeben von Text in Textfelder, das Klicken auf die Schaltflächen usw. Wir werden die Methoden sehen, die für den Zugriff auf jedes Formularelement verfügbar sind.

In diesem Tutorial erfahren Sie, wie Sie die folgenden Formularelemente identifizieren

  • Einführung in WebElement, findElement (), findElements ()
  • Eingabefeld
  • Werte in Eingabefelder eingeben
  • Löschen von Werten in Eingabefeldern
  • Tasten
  • Senden Sie die Schaltflächen
  • Vollständiger Code
  • Fehlerbehebung

Einführung in WebElement, findElement (), findElements ()

Selenium Web Driver kapselt ein einfaches Formularelement als Objekt von WebElement.

Es gibt verschiedene Techniken, mit denen der WebDriver die Formularelemente anhand der verschiedenen Eigenschaften der Webelemente wie ID, Name, Klasse, XPath, Tagname, CSS-Selektoren, Linktext usw. identifiziert.

Der Webtreiber bietet die folgenden zwei WebElement-Methoden zum Suchen der Elemente.

  • findElement () - findet ein einzelnes Webelement und gibt es als WebElement Selenium-Objekt zurück.
  • findElements () - Gibt eine Liste von WebElement-Objekten zurück, die den Locator-Kriterien entsprechen.

Sehen wir uns die Codefragmente an, um ein einzelnes Element - Textfeld auf einer Webseite als Objekt von WebElement mithilfe der findElement () -Methode abzurufen. Wir werden die Methode findElements () zum Auffinden mehrerer Elemente in nachfolgenden Tutorials behandeln.

Schritt 1: Wir müssen dieses Paket importieren, um Objekte von Web Elements zu erstellen

Schritt 2: Wir müssen die findElement () -Methode aufrufen, die in der WebDriver-Klasse verfügbar ist, und ein Objekt von WebElement abrufen.

Siehe unten, um zu sehen, wie es gemacht wird.

Eingabefeld

Eingabefelder beziehen sich auf einen dieser beiden Typen:

  1. Textfelder - Selenium-Eingabetextfelder, die eingegebene Werte akzeptieren und so anzeigen, wie sie sind.
  2. Kennwortfelder - Textfelder, die eingegebene Werte akzeptieren, diese jedoch als eine Reihe von Sonderzeichen (normalerweise Punkte und Sternchen) maskieren, um zu vermeiden, dass vertrauliche Werte angezeigt werden.

Locators

Die Methode findElement () verwendet einen Parameter, der ein Locator für das Element ist. Verschiedene Locators wie By.id (), By.name (), By.xpath (), By.CSSSelector () usw. lokalisieren die Elemente auf der Seite anhand ihrer Eigenschaften wie`````` id, name oder path, usw.

Sie können Plugins wie Fire Path verwenden, um Hilfe beim Abrufen der ID, des Xpath usw. der Elemente zu erhalten.

Unter Verwendung der unten angegebenen Beispielwebsite http://demo.guru99.com/test/login.html finden Sie den Code zum Suchen des Textfelds "E-Mail-Adresse" mithilfe des ID-Locators und des Felds "Kennwort" mithilfe des Namens-Locators.

  1. Das E-Mail-Textfeld befindet sich nach ID
  2. Das Passwortfeld befindet sich nach Namen

sendkeys in Selen

sendkeys () in Selenium ist eine Methode, mit der während der Testausführung bearbeitbare Inhalte in die Text- und Kennwortfelder eingegeben werden können. Diese Felder werden mithilfe von Locatoren wie Name, Klasse, ID usw. identifiziert. Diese Methode ist im Webelement verfügbar. Im Gegensatz zur Typmethode ersetzt die sendkeys () -Methode keinen vorhandenen Text in einem Textfeld.

Werte in Eingabefelder eingeben

SendKeys () ist die im WebElement in Selen verfügbare Methode, um Text in die Textfelder und Kennwortfelder einzugeben.

Anhand des gleichen Beispiels der Website http://demo.guru99.com/test/login.html finden Sie hier die Felder Textfeld und Kennwort und geben Text in Selenium ein.

  1. Suchen Sie das Textfeld "E-Mail-Adresse" mit dem ID-Locator.
  2. Suchen Sie das Feld "Passwort" mit dem Namensfinder
  3. Geben Sie Text in die "E-Mail-Adresse" mit der Selenium-Sendkeys-Methode ein.
  4. Geben Sie mit der Methode sendKeys () ein Passwort in das Feld "Passwort" ein.

Löschen von Werten in Eingabefeldern

Die clear () -Methode wird verwendet, um den Text in einem Eingabefeld zu löschen. Diese Methode benötigt keinen Parameter . Das folgende Codefragment löscht den Text aus den Feldern E-Mail oder Passwort

Tasten

Auf die Selenium-Klick-Schaltfläche kann mit der click () -Methode zugegriffen werden.

Im obigen Beispiel

  1. Suchen Sie die Schaltfläche zum Anmelden
  2. Klicken Sie auf der Anmeldeseite der Site auf die Schaltfläche "Anmelden", um sich bei der Site anzumelden.

Senden Sie die Schaltflächen

Mit den Schaltflächen zum Senden wird das gesamte Formular an den Server gesendet. Wir können entweder die click () -Methode für das Webelement wie eine normale Schaltfläche verwenden, wie wir es oben getan haben, oder die submit () -Methode für jedes Webelement im Formular oder für die Senden-Schaltfläche selbst verwenden.

Wenn submit () verwendet wird, sucht WebDriver im DOM nach der Form, zu der das Element gehört, und löst dann seine Submit-Funktion aus.

Vollständiger Code

Hier ist der vollständige Arbeitscode

import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium. *;öffentliches Klassenformular {public static void main (String [] args) {// Deklaration und Instanziierung von Objekten / VariablenSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Holen Sie sich das WebElement entsprechend der E-Mail-Adresse (TextField)WebElement email = driver.findElement (By.id ("email"));// Holen Sie sich das WebElement, das dem Passwortfeld entsprichtWebElement password = driver.findElement (By.name ("passwd"));email.sendKeys (" Diese E-Mail-Adresse wird vor Spambots geschützt. Zum Anzeigen muss JavaScript aktiviert sein.");password.sendKeys ("abcdefghlkjl");System.out.println ("Text Field Set");// Werte im Textfeld löschenemail.clear ();password.clear ();System.out.println ("Textfeld gelöscht");// Finde den Submit ButtonWebElement login = driver.findElement (By.id ("SubmitLogin"));// Mit der Klickmethode das Formular sendenemail.sendKeys (" Diese E-Mail-Adresse ist vor Spambots geschützt. Zum Anzeigen muss JavaScript aktiviert sein."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Anmeldung mit Klick erledigt"); // Verwenden der Submit-Methode zum Senden des Formulars. Senden verwendet im Passwortfeld driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Diese E-Mail-Adresse wird vor Spambots geschützt. Zum Anzeigen muss JavaScript aktiviert sein."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Anmeldung mit Senden abgeschlossen"); //driver.close (); }}

Fehlerbehebung

Wenn Sie beim Suchen von Elementen auf NoSuchElementException () stoßen, bedeutet dies, dass das Element an dem Punkt, an dem der Webtreiber auf die Seite zugegriffen hat, nicht auf der Seite gefunden wird.

  1. Überprüfen Sie Ihren Locator erneut mit Firepath oder Inspect Element in Chrome.
  2. Überprüfen Sie, ob sich der im Code verwendete Wert von dem für das Element in Firepath unterscheidet.
  3. Einige Eigenschaften sind für wenige Elemente dynamisch. Wenn Sie feststellen, dass der Wert unterschiedlich ist und sich dynamisch ändert, sollten Sie By.xpath () oder By.cssSelector () verwenden, die zuverlässiger, aber komplexer sind.
  4. Manchmal kann es auch zu Wartezeiten kommen, dh der Web-Treiber hat Ihren Code ausgeführt, noch bevor die Seite vollständig geladen wurde usw.
  5. Fügen Sie eine Wartezeit vor findElement () hinzu, indem Sie implizite oder explizite Wartezeiten verwenden.

Zusammenfassung

  • In der folgenden Tabelle sind die Befehle für den Zugriff auf die oben beschriebenen Elementtypen zusammengefasst
Element Befehl Beschreibung
Eingabefeld sendKeys () wird verwendet, um Werte in Textfelder einzugeben
klar() wird verwendet, um Textfelder von ihrem aktuellen Wert zu löschen
Links klicken() Klicken Sie auf den Link und warten Sie, bis das Laden der Seite abgeschlossen ist, bevor Sie mit dem nächsten Befehl fortfahren.
Senden-Schaltfläche einreichen()
  • WebDriver ermöglicht die Auswahl mehrerer Optionen in mehreren SELECT-Elementen.
  • Sie können die Methode submit () für jedes Element im Formular verwenden. WebDriver löst automatisch die Übermittlungsfunktion des Formulars aus, zu dem dieses Element gehört.