WebElement in Selenium

WebElement in Selenium

Formulieren zijn de fundamentele webelementen om informatie van websitebezoekers te ontvangen. Webformulieren hebben verschillende GUI-elementen zoals tekstvakken, wachtwoordvelden, selectievakjes, keuzerondjes, dropdowns, bestandsinvoer, etc.

We zullen zien hoe u toegang kunt krijgen tot deze verschillende formulierelementen met behulp van Selenium Webstuurprogramma met Java. Selenium kapselt elk formulierelement in als een object van WebElement. Het biedt een API waarmee u de elementen kunt vinden en er actie op kunt ondernemen, zoals het invoeren van tekst in tekstvakken, het klikken op knoppen, enzovoort. We bekijken de methoden die 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 de volgende twee WebElement-methoden om de elementen te vinden.

  • zoekElement() – vindt een enkel webelement en retourneert als een WebElement Selenium voorwerp.
  • 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 Voer tekst in

Met invoervakken wordt een van de volgende twee typen bedoeld:

  1. Tekstvelden- Selenium invoertekstvakken die getypte waarden accepteren en deze weergeven zoals ze zijn.
  2. Wachtwoordvelden– tekstvakken 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 Voer tekst in

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 het tekstveld "E-mailadres" te vinden met behulp van de id-locator en het veld "Wachtwoord" met behulp van de naamlocator.

Zoekers

  1. Het e-mailtekstveld bevindt zich op ID
  2. Het wachtwoordveld bevindt zich op naam

sleutels insturen Selenium

sendkeys() in Selenium is een methode die wordt gebruikt om bewerkbare inhoud in te voeren in de tekst- en wachtwoordvelden tijdens de uitvoering van de test. 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 typemethode vervangt de sendkeys()-methode geen bestaande tekst in een tekstvak.

Hoe tekst in te voeren 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.

Website Tekst in Selenium

  1. Zoek het tekstveld 'E-mailadres' met behulp van de id-locator.
  2. Zoek het veld 'Wachtwoord' met behulp van de naamzoeker
  3. Voer tekst in het "E-mailadres" in 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

De Doorzichtig() Deze methode wordt gebruikt om de tekst in een invoerveld te verwijderen. Deze methode heeft geen parameter nodig. Het onderstaande codefragment verwijdert de tekst uit de velden E-mail of Wachtwoord

Waarden in invoer verwijderen Boxes

Selenium Klik op Knoppen

De Selenium click-knop 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 Klik op Knoppen

Selenium Knoppen voor verzenden

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 Knoppen voor verzenden

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

Problemen 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. Dit zijn betrouwbaardere maar complexere 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.

Samenvatting

  • De onderstaande tabel vat de opdrachten samen om toegang te krijgen tot elk type element dat hierboven is besproken
Element commando BESCHRIJVING
Invoer Box sendKeys () wordt gebruikt om waarden in tekstvakken in te voeren
Doorzichtig() wordt gebruikt om tekstvakken van hun huidige waarde te wissen
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.