WebElement in Selenium: TexteBox, Button, sendkeys(), click()
WebElement in Selenium
Formulare sind die grundlegenden Webelemente, um Informationen von Websitebesuchern zu erhalten. Webformulare haben verschiedene GUI-Elemente wie Textfelder, Kennwortfelder, Kontrollkästchen, Optionsfelder, Dropdown-Listen, Dateieingaben usw.
Wir werden sehen, wie man mit auf diese verschiedenen Formularelemente zugreift Selenium Web-Treiber mit Java. Selenium kapselt jedes Formularelement als Objekt von WebElement. Es stellt eine API bereit, um die Elemente zu finden und Aktionen mit ihnen auszuführen, wie z. B. das Eingeben von Text in Textfelder, das Klicken auf 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 die folgenden zwei WebElement-Methoden zum Suchen der Elemente.
- findElement() – findet ein einzelnes Webelement und gibt es als WebElement zurück Selenium Objekt.
- 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
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
Eingabefelder beziehen sich auf einen dieser beiden Typen:
- Textfelder- Selenium Eingabetextfelder, die eingegebene Werte akzeptieren und so anzeigen, wie sie sind.
- Passwortfelder– Textfelder, die eingegebene Werte akzeptieren, diese aber als Reihe von Sonderzeichen (normalerweise Punkte und Sternchen) maskieren, um die Anzeige vertraulicher Werte zu vermeiden.
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 Textfelds „E-Mail-Adresse“ mithilfe des ID-Locators und des Felds „Passwort“ mithilfe des Namens-Locators.
- Das E-Mail-Textfeld befindet sich bei der ID
- Das Passwortfeld befindet sich nach Namen
sendkeys rein Selenium
sendkeys() in Selenium ist eine Methode, die verwendet wird, um während der Testausführung editierbaren Inhalt in die Text- und Kennwortfelder einzugeben. 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 Methode sendkeys() keinen vorhandenen Text in einem Textfeld.
So geben Sie Text ein Selenium
Um Text in die Textfelder und Passwortfelder einzugeben, ist sendKeys() die Methode, die im WebElement in verfügbar ist Selenium.
Verwenden Sie das gleiche Beispiel von https://demo.guru99.com/test/login.html Auf der Website erfahren Sie, wie wir die Felder „Text“ und „Passwort“ finden und Text eingeben Selenium.
- Suchen Sie mithilfe des ID-Locators das Textfeld „E-Mail-Adresse“.
- Suchen Sie mit dem Namensfinder nach dem Feld „Passwort“.
- Geben Sie Text in das Feld „E-Mail-Adresse“ ein. Verwenden Sie dazu Selenium sendkeys-Methode.
- Geben Sie mit der Methode sendKeys() ein Passwort in das Feld „Passwort“ ein.
Werte in der Eingabe löschen Boxes
Das klar() Methode wird verwendet, um den Text in einem Eingabefeld zu löschen. Diese Methode benötigt keinen Parameter. Der folgende Codeausschnitt löscht den Text aus den Feldern „E-Mail“ oder „Passwort“
Selenium Klicken Sie auf Schaltflächen
Das Selenium Auf die Click-Schaltfläche kann mit der Methode click() zugegriffen werden.
Im obigen Beispiel
- Suchen Sie die Schaltfläche zum Anmelden
- Klicken Sie auf der Anmeldeseite der Website auf die Schaltfläche „Anmelden“, um sich bei der Website anzumelden.
Selenium Schaltflächen zum Senden
Ü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.
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.
- Überprüfen Sie Ihren Locator erneut mit Firepath oder Inspect Element in Chrome.
- Überprüfen Sie jetzt, ob sich der Wert, den Sie im Code verwendet haben, von dem für das Element in Firepath unterscheidet.
- Einige Eigenschaften sind für einige Elemente dynamisch. Falls Sie feststellen, dass der Wert anders ist und sich dynamisch ändert, sollten Sie By.xpath() oder By.cssSelector() verwenden, die zuverlässigere, aber komplexere Methoden sind.
- 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.
- 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 die oben beschriebenen Elementtypen zusammen.
Element | Befehl | Beschreibung |
---|---|---|
Eingang Box | sendKeys () | Wird zum Eingeben von Werten in Textfelder verwendet. |
klar() | wird verwendet, um Textfelder von ihrem aktuellen Wert zu löschen | |
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.