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

WebElement in Selenium

Formulare sind die grundlegenden Webelemente, um Informationen von den Website-Besuchern zu erhalten. Webformulare verfügen über verschiedene GUI-Elemente wie Text boxes, Passwortfelder, PrüfenboxEs, Optionsfelder, Dropdown-Listen, Dateieingaben usw.

Wir werden sehen, wie man mit dem Selenium Web Driver mit Java auf diese verschiedenen Formularelemente zugreift. Selenium kapselt jedes Formularelement als Objekt von WebElement. Es stellt eine API bereit, um die Elemente zu finden und entsprechende Maßnahmen zu ergreifen, beispielsweise Text in Text einzugeben boxEs, Klicken auf die Schaltflächen usw. Wir werden die Methoden sehen, die für den Zugriff auf jedes Formularelement verfügbar sind.

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 unterschiedlichen Eigenschaften der Webelemente wie ID, Name, Klasse, XPath, Tagname, CSS-Selektoren, Linktext usw. identifiziert.

Web Driver bietet Folgendeswing zwei WebElement-Methoden, um die Elemente zu finden.

  • 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 Codeausschnitte an, um ein einzelnes Element – ​​Textfeld – auf einer Webseite als Objekt von WebElement mithilfe der Methode findElement() abzurufen. Wir werden die Methode findElements() zum Suchen mehrerer Elemente in den folgenden Tutorials behandeln.

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

Einführung in WebElement FindElement, FindElements

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

Nachfolgend erfahren Sie, wie es gemacht wird.

Selenium-Eingabetext

zufuhr boxes beziehen sich auf einen dieser beiden Typen:

  1. Textfelder– Selenium-Eingabetext boxEs, die eingegebene Werte akzeptieren und sie so anzeigen, wie sie sind.
  2. Passwortfelder– Texte boxEs akzeptiert eingegebene Werte, maskiert sie jedoch als eine Reihe von Sonderzeichen (üblicherweise Punkte und Sternchen), um die Anzeige sensibler Werte zu verhindern.

    Selenium-Eingabetext

Locators

Die Methode findElement() benötigt 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 Pfad usw.

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

Verwendung der Beispielseite https://demo.guru99.com/test/login.html Unten finden Sie den Code zum Auffinden des „Email Geben Sie mithilfe des ID-Locators das Textfeld „Adresse“ und mithilfe des Namens-Locators das Feld „Passwort“ ein.

Locators

  1. Email Das Textfeld befindet sich nach der ID
  2. Das Passwortfeld befindet sich nach Namen

sendkeys in Selenium

sendkeys() in Selenium ist eine Methode zur Eingabe bearbeitbarer Inhalte in die Text- und Passwortfelder während der Testausführung. Diese Felder werden mithilfe von Locators wie Name, Klasse, ID usw. identifiziert. Es handelt sich um eine Methode, die im Webelement verfügbar ist. Im Gegensatz zur Typmethode ersetzt die sendkeys()-Methode keinen vorhandenen Text in irgendeinem Text box.

So geben Sie Text in Selenium ein

Um Text in die Textfelder und Passwortfelder einzugeben, ist sendKeys() die Methode, die im WebElement in Selenium verfügbar ist.

Verwenden Sie das gleiche Beispiel von https://demo.guru99.com/test/login.html Auf dieser Website erfahren Sie, wie wir die Felder „Text“ und „Passwort“ finden und Text in Selenium eingeben.

Text in Selen

  1. Suchen Sie nach „Email „Adresse“ Textfeld mit dem ID-Locator.
  2. Suchen Sie mit dem Namensfinder nach dem Feld „Passwort“.
  3. Geben Sie Text in das Feld „Email Adresse“ mit der Selenium-Sendkeys-Methode.
  4. Geben Sie mit der Methode sendKeys() ein Passwort in das Feld „Passwort“ ein.

Werte in der Eingabe löschen Boxes

Der klar() Die Methode wird verwendet, um den Text in einer Eingabe zu löschen box. Diese Methode benötigt keinen Parameter. Der folgende Codeausschnitt löscht den Text aus dem Email oder Passwortfelder

Werte in der Eingabe löschen Boxes

Selenium-Klickschaltflächen

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

Im obigen Beispiel

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

Selenium-Klickschaltflächen

Selenium-Senden-Schaltflächen

Über die Schaltflächen „Senden“ wird das gesamte Formular an den Server gesendet. Wir können entweder die click()-Methode auf dem Webelement wie eine normale Schaltfläche verwenden, wie wir es oben getan haben, oder die subscribe()-Methode auf einem beliebigen Webelement im Formular oder auf der Absenden-Schaltfläche selbst verwenden.

Selenium-Senden-Schaltflächen

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.

Code vervollständigen

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.*;		

public class Form {				
    public static void main(String[] args) {									
    		
    	// declaration and instantiation of objects/variables		
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        String baseUrl = "https://demo.guru99.com/test/login.html";					
        driver.get(baseUrl);					

        // Get the WebElement corresponding to the Email Address(TextField)		
        WebElement email = driver.findElement(By.id("email"));							

        // Get the WebElement corresponding to the Password Field		
        WebElement password = driver.findElement(By.name("passwd"));							

        email.sendKeys("abcd@gmail.com");					
        password.sendKeys("abcdefghlkjl");					
        System.out.println("Text Field Set");					
         
        // Deleting values in the text box		
        email.clear();			
        password.clear();			
        System.out.println("Text Field Cleared");					

        // Find the submit button		
        WebElement login = driver.findElement(By.id("SubmitLogin"));							
                    		
        // Using click method to submit form		
        email.sendKeys("abcd@gmail.com");					
        password.sendKeys("abcdefghlkjl");					
        login.click();			
        System.out.println("Login Done with Click");					
        		
        //using submit method to submit the form. Submit used on password field		
        driver.get(baseUrl);					
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");							
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");							
        driver.findElement(By.id("SubmitLogin")).submit();					
        System.out.println("Login Done with Submit");					
         
		//driver.close();		
        		
    }		
}

Problemlösung

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

  1. Überprüfen Sie Ihren Locator erneut mit Firepath oder Inspect Element in Chrome.
  2. Überprüfen Sie jetzt, ob sich der Wert, den Sie im Code verwendet haben, von dem für das Element in Firepath unterscheidet.
  3. Einige Eigenschaften sind für wenige Elemente dynamisch. Falls Sie feststellen, dass der Wert unterschiedlich ist und sich dynamisch ändert, sollten Sie die Verwendung von By.xpath() oder By.cssSelector() in Betracht ziehen, die zuverlässiger, aber komplizierter sindplex Wege.
  4. Manchmal kann es sich auch um ein Warteproblem handeln, z. B. weil der Webtreiber Ihren Code bereits ausgeführt hat, bevor die Seite vollständig geladen wurde usw.
  5. Fügen Sie vor findElement() eine Wartezeit hinzu, indem Sie implizite oder explizite Wartezeiten verwenden.

Zusammenfassung

  • Die folgende Tabelle fasst die Befehle für den Zugriff auf jeden oben besprochenen Elementtyp zusammen
Element Befehl Beschreibung
zufuhr Box sendKeys () Wird zum Eingeben von Werten in Text verwendet boxes
klar() Wird zum Löschen von Text verwendet boxes seines aktuellen Wertes
Links klicken() Wird verwendet, um auf den Link zu klicken und zu warten, bis der Seitenladevorgang abgeschlossen ist, bevor mit dem nächsten Befehl fortgefahren wird.
Taste Senden einreichen()
  • WebDriver ermöglicht die Auswahl von mehr als einer Option in einem Mehrfach-SELECT-Element.
  • Sie können die Methode „submit()“ für jedes Element innerhalb des Formulars verwenden. WebDriver löst automatisch die Absendefunktion des Formulars aus, zu dem dieses Element gehört.