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

Inhoudsopgave:

Anonim

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

We zullen zien hoe u toegang kunt krijgen tot deze verschillende formulierelementen met Selenium Web Driver met Java. Selenium omvat elk formulierelement 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 tekstvakken, klikken op de knoppen, enz. We zullen de methoden zien die beschikbaar zijn om toegang te krijgen tot elk formulierelement.

In deze zelfstudie zullen we zien hoe u de volgende formulierelementen kunt identificeren

  • Inleiding tot WebElement, findElement (), findElements ()
  • Invoerveld
  • Waarden invoeren in invoervakken
  • Waarden verwijderen in invoervakken
  • Toetsen
  • Knoppen indienen
  • Volledige code
  • Probleemoplossen

Inleiding tot WebElement, findElement (), findElements ()

Selenium Web Driver omvat een eenvoudig formulierelement als een 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, Tagname, CSS Selectors, Link Text, etc.

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

  • findElement () - vindt een enkel webelement en keert terug als een WebElement Selenium-object.
  • findElements () - retourneert een lijst met WebElement-objecten die voldoen aan de locatorcriteria.

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

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

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

Raadpleeg hieronder om te zien hoe het wordt gedaan.

Invoerveld

Invoervakken verwijzen naar een van deze twee typen:

  1. Tekstvelden - Selenium invoertekstvakken die getypte waarden accepteren en tonen zoals ze zijn.
  2. Wachtwoordvelden - tekstvakken die getypte waarden accepteren maar deze maskeren als een reeks speciale tekens (gewoonlijk punten en sterretjes) om te voorkomen dat gevoelige waarden worden weergegeven.

Locators

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

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

Met behulp van de voorbeeldsite http://demo.guru99.com/test/login.html hieronder is de code om het "E-mailadres" tekstveld te lokaliseren met behulp van de id locator en het "Wachtwoord" veld met de naam locator.

  1. E-mailtekstveld bevindt zich op Id
  2. Wachtwoordveld bevindt zich op naam

sendkeys in Selenium

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

Waarden invoeren in invoervakken

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 de http://demo.guru99.com/test/login.html site, hier is hoe we het tekstveld en de wachtwoordvelden vinden en tekst invoeren 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 verwijderen in invoervakken

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

Toetsen

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

In het bovenstaande voorbeeld

  1. Zoek de knop om in te loggen
  2. Klik op de knop "Aanmelden" op de aanmeldingspagina van de site om in te loggen op de site.

Knoppen indienen

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

Wanneer submit () wordt gebruikt, zoekt WebDriver de DOM op om te weten tot welk formulier het element behoort, en activeert vervolgens de submit-functie.

Volledige code

Hier is de volledige werkende code

import org.openqa.selenium.By;importeer org.openqa.selenium.WebDriver;importeer org.openqa.selenium.chrome.ChromeDriver;importeer org.openqa.selenium. *;openbaar klasformulier {public static void main (String [] args) {// declaratie en concretisering van objecten / variabelenSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-stuurprogramma = nieuwe ChromeDriver ();String baseUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Haal het WebElement op dat overeenkomt met het e-mailadres (TextField)WebElement email = driver.findElement (By.id ("email"));// Haal het WebElement op dat overeenkomt met het wachtwoordveldWebElement wachtwoord = driver.findElement (By.name ("passwd"));email.sendKeys (" Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te bekijken.");password.sendKeys ("abcdefghlkjl");System.out.println ("Tekstveldset");// Wissen van waarden in het tekstvakemail.clear ();wachtwoord.clear ();System.out.println ("Tekstveld gewist");// Zoek de verzendknopWebElement login = driver.findElement (By.id ("SubmitLogin"));// Gebruik de klikmethode om het formulier in te dienenemail.sendKeys (" Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te bekijken."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Inloggen voltooid met klik"); // gebruik de verzendmethode om het formulier in te dienen. Indienen gebruikt in wachtwoordveld driver.get (baseUrl); driver.findElement (By.id ("email")). sendKeys (" Dit e-mailadres is beschermd tegen spambots. JavaScript moet ingeschakeld zijn om het te kunnen bekijken."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Inloggen voltooid met verzenden"); //driver.close (); ​

Probleemoplossen

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

  1. Controleer uw locator opnieuw met Firepath of Inspect Element in Chrome.
  2. Controleer of de waarde die je in de code hebt 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 By.xpath () of By.cssSelector () te gebruiken, die betrouwbaarder maar complexer zijn.
  4. Soms kan het ook een wachtprobleem zijn, dwz het webstuurprogramma heeft uw code uitgevoerd voordat de pagina volledig was geladen, enz.
  5. Voeg een wait before findElement () toe met behulp van impliciete of expliciete wachttijden.

Overzicht

  • De onderstaande tabel geeft een overzicht van de opdrachten om toegang te krijgen tot elk type element dat hierboven is besproken
Element Opdracht Omschrijving
Invoerveld sendKeys () gebruikt om waarden in tekstvakken in te voeren
Doorzichtig() gebruikt om tekstvakken van de huidige waarde te wissen
Links Klik() gebruikt om op de link te klikken en te wachten tot het laden van de pagina is voltooid voordat u verdergaat met de volgende opdracht.
Verzendknop indienen ()
  • Met WebDriver kunt u meer dan één optie in een meervoudig SELECT-element selecteren.
  • U kunt de methode submit () op elk element in het formulier gebruiken. WebDriver activeert automatisch de verzendfunctie van het formulier waartoe dat element behoort.