WebElement in Selenium: TekstBox, Knop, sendkeys(), klik()

WebElement in Selenium

Formulieren zijn de fundamentele webelementen om informatie van websitebezoekers te ontvangen. Webformulieren hebben verschillende GUI-elementen, zoals tekst boxes, Wachtwoordvelden, Controleboxes, keuzerondjes, vervolgkeuzelijsten, bestandsinvoer, enz.

We zullen zien hoe u toegang kunt krijgen tot deze verschillende formulierelementen met behulp van Selenium Web Driver met Java. Selenium kapselt elk vormelement in als een object van WebElement. Het biedt een API om de elementen te vinden en er actie op te ondernemen, zoals het invoeren van tekst in tekst boxes, klikken op de knoppen, enz. We zullen zien welke methoden beschikbaar zijn om toegang te krijgen tot elk formulierelement.

Inleiding tot WebElement, findElement(), findElements()

Selenium Web Driver kapselt een eenvoudig vormelement in als object van WebElement.

Er zijn verschillende technieken waarmee de WebDriver de formulierelementen identificeert op basis van de verschillende eigenschappen van de webelementen, zoals ID, Naam, Klasse, XPath, Tagnaam, CSS-kiezers, linktekst, enz.

Web Driver biedt het volgendewing twee WebElement-methoden om de elementen te vinden.

  • zoekElement() – vindt een enkel webelement en retourneert als een WebElement Selenium-object.
  • vindElementen() – retourneert een lijst met WebElement-objecten die voldoen aan de locatorcriteria.

Laten we de codefragmenten bekijken om een ​​enkel element – ​​Tekstveld – op een webpagina te krijgen als een object van WebElement met behulp van de findElement()-methode. We zullen de methode findElements() voor het vinden van meerdere elementen bespreken in volgende tutorials.

Stap 1) We moeten dit pakket importeren om objecten van Web Elements te maken

Inleiding tot WebElement FindElement,FindElements

Stap 2) We moeten de methode findElement() aanroepen die beschikbaar is in de klasse WebDriver en een object van WebElement ophalen.

Hieronder ziet u hoe u dit doet.

Selenium-invoertekst

Invoer boxes verwijzen naar een van deze twee typen:

  1. Tekstvelden– Selenium-invoertekst boxes die getypte waarden accepteren en deze weergeven zoals ze zijn.
  2. Wachtwoordvelden– tekst boxes die getypte waarden accepteren, maar deze maskeren als een reeks speciale tekens (meestal punten en sterretjes) om te voorkomen dat gevoelige waarden worden weergegeven.

    Selenium-invoertekst

Zoekers

De methode findElement() gebruikt één parameter die een locator voor het element is. Verschillende locators zoals By.id(), By.name(), By.xpath(), By.CSSSelector() etc. lokaliseren de elementen op de pagina met behulp van hun eigenschappen zoals “““ id, naam of pad, etc.

U kunt plug-ins zoals Fire path gebruiken om hulp te krijgen bij het verkrijgen van de id, xpath, enz. van de elementen.

Met behulp van de voorbeeldsite https://demo.guru99.com/test/login.html Hieronder vindt u de code om de “Email adres” tekstveld met behulp van de ID-locator en het veld “Wachtwoord” met behulp van de naamlocator.

Zoekers

  1. Email tekstveld bevindt zich op ID
  2. Het wachtwoordveld bevindt zich op naam

verzendsleutels in Selenium

sendkeys() in Selenium is een methode die wordt gebruikt om bewerkbare inhoud in de tekst- en wachtwoordvelden in te voeren tijdens de testuitvoering. Deze velden worden geïdentificeerd met behulp van locators zoals naam, klasse, id, enz. Het is een methode die beschikbaar is op het webelement. In tegenstelling tot de methode type vervangt de methode sendkeys() bestaande tekst in geen enkele tekst box.

Tekst invoeren in Selenium

Om tekst in de tekstvelden en wachtwoordvelden in te voeren, is sendKeys() de methode die beschikbaar is op het WebElement in Selenium.

Met hetzelfde voorbeeld van https://demo.guru99.com/test/login.html site, zo vinden we de velden Tekstveld en Wachtwoord en voeren we tekst in Selenium in.

Tekst in Selenium

  1. Zoek de “Email Adres” Tekstveld met behulp van de ID-locator.
  2. Zoek het veld 'Wachtwoord' met behulp van de naamzoeker
  3. Voer tekst in de “Email Adres” met behulp van de Selenium sendkeys-methode.
  4. Voer een wachtwoord in het veld "Wachtwoord" in met behulp van de methode sendKeys().

Waarden in invoer verwijderen Boxes

Het Doorzichtig() methode wordt gebruikt om de tekst in een invoer te verwijderen box. Deze methode heeft geen parameter nodig. Met het onderstaande codefragment wordt de tekst uit de Email of Wachtwoordvelden

Waarden in invoer verwijderen Boxes

Selenium-klikknoppen

De Selenium-klikknop is toegankelijk via de click()-methode.

In het bovenstaande voorbeeld

  1. Zoek de knop om in te loggen
  2. Klik op de knop 'Aanmelden' op de inlogpagina van de site om in te loggen op de site.

Selenium-klikknoppen

Selenium-verzendknoppen

Verzendknoppen worden gebruikt om het volledige formulier naar de server te verzenden. We kunnen de methode klik () op het webelement gebruiken als een normale knop, zoals we hierboven hebben gedaan, of de methode verzenden () gebruiken op elk webelement in het formulier of op de knop Verzenden zelf.

Selenium-verzendknoppen

Wanneer submission() wordt gebruikt, zal WebDriver de DOM opzoeken om te weten tot welke vorm het element behoort, en vervolgens de verzendfunctie activeren.

Volledige code

Hier is de volledige werkende code

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();		
        		
    }		
}

Probleem oplossen

Als u NoSuchElementException() tegenkomt tijdens het zoeken naar elementen, betekent dit dat het element niet op de pagina is gevonden op het moment dat het webstuurprogramma de pagina heeft geopend.

  1. Controleer uw locator opnieuw met Firepath of Inspect Element in Chrome.
  2. Controleer nu of de waarde die u in de code heeft gebruikt, anders is dan die voor het element in Firepath.
  3. Sommige eigenschappen zijn dynamisch voor enkele elementen. Als u merkt dat de waarde anders is en dynamisch verandert, overweeg dan om By.xpath() of By.cssSelector() te gebruiken, die betrouwbaarder zijn, maar complex manieren.
  4. Soms kan het ook een wachtprobleem zijn, dat wil zeggen dat het webstuurprogramma uw code uitvoert nog voordat de pagina volledig is geladen, enz.
  5. Voeg een wachttijd toe vóór findElement() met behulp van impliciete of expliciete wachttijden.

Samengevat

  • De onderstaande tabel vat de opdrachten samen voor toegang tot elk type element dat hierboven is besproken
Element commando Omschrijving
Invoer Box sendKeys () gebruikt om waarden in tekst in te voeren boxes
Doorzichtig() gebruikt om tekst te wissen boxes van zijn huidige waarde
Links Klik() wordt gebruikt om op de link te klikken en te wachten tot het laden van de pagina is voltooid voordat u doorgaat naar de volgende opdracht.
Button Submit indienen()
  • Met WebDriver kunt u meer dan één optie selecteren in een meervoudig SELECT-element.
  • U kunt de methode submission() voor elk element in het formulier gebruiken. WebDriver activeert automatisch de verzendfunctie van het formulier waar dat element toe behoort.