Selen Form WebElement: TextBox, Button, sendkeys (), klicka ()

Innehållsförteckning:

Anonim

Formulär är de grundläggande webbelementen för att få information från webbplatsens besökare. Webblanketter har olika GUI-element som textrutor, lösenordsfält, kryssrutor, radioknappar, rullgardinsmenyer, filingångar etc.

Vi kommer att se hur du kommer åt dessa olika formelement med hjälp av Selenium Web Driver med Java. Selen inkapslar varje formelement som ett objekt för WebElement. Det ger API för att hitta elementen och vidta åtgärder på dem som att skriva in text i textrutor, klicka på knapparna etc. Vi ser de metoder som är tillgängliga för att komma åt varje formulärelement.

I denna handledning kommer vi att se hur man identifierar följande formelement

  • Introduktion till WebElement, findElement (), findElements ()
  • Inmatningslåda
  • Ange värden i inmatningsrutorna
  • Ta bort värden i inmatningsrutorna
  • Knappar
  • Skicka knappar
  • Komplett kod
  • Felsökning

Introduktion till WebElement, findElement (), findElements ()

Selenium Web Driver inkapslar ett enkelt formulärelement som ett objekt för WebElement.

Det finns olika tekniker genom vilka WebDriver identifierar formelementen baserat på de olika egenskaperna hos webbelementen som ID, Namn, Klass, XPath, Tagname, CSS-väljare, länktext etc.

Web Driver tillhandahåller följande två WebElement-metoder för att hitta elementen.

  • findElement () - hittar ett enda webbelement och returneras som ett WebElement Selen-objekt.
  • findElements () - returnerar en lista med WebElement-objekt som matchar sökarkriterierna.

Låt oss se kodavsnitten för att få ett enda element - Textfält på en webbsida som ett objekt för WebElement med findElement () -metoden. Vi ska täcka metoden findElements () för att hitta flera element i efterföljande självstudier.

Steg 1: Vi måste importera detta paket för att skapa objekt av webbelement

Steg 2: Vi måste ringa metoden findElement () som är tillgänglig i klassen WebDriver och få ett objekt från WebElement.

Se nedan för att se hur det görs.

Inmatningslåda

Inmatningsrutor hänvisar till någon av dessa två typer:

  1. Textfält - Seleninmatade textrutor som accepterar inskrivna värden och visar dem som de är.
  2. Lösenordsfält - textrutor som accepterar inskrivna värden men maskerar dem som en serie specialtecken (vanligtvis prickar och asterisker) för att undvika att känsliga värden visas.

Sökare

Metoden findElement () tar en parameter som är en lokaliserare till elementet. Olika lokatorer som By.id (), By.name (), By.xpath (), By.CSSSelector () etc. lokaliserar elementen på sidan med hjälp av deras egenskaper som '' '', id, namn eller sökväg, etc.

Du kan använda plugins som Fire path för att få hjälp med att få id, xpath, etc. för elementen.

Med hjälp av exempelwebbplatsen http://demo.guru99.com/test/login.html som anges nedan är koden för att lokalisera textfältet "E-postadress" med id-lokaliseraren och "Lösenord" -fältet med namngivaren.

  1. E-posttextfältet finns med Id
  2. Lösenordsfältet finns med namn

sendkeys i Selen

sendkeys () i Selenium är en metod som används för att ange redigerbart innehåll i text- och lösenordsfälten under testkörningen. Dessa fält identifieras med hjälp av sökare som namn, klass, id, etc. Det är en metod som finns på webbelementet. Till skillnad från typmetoden ersätter metoden sendkeys () inte befintlig text i någon textruta.

Ange värden i inmatningsrutorna

För att skriva in text i textfält och lösenordsfält är sendKeys () metoden tillgänglig på WebElement i Selen.

Med samma exempel på http://demo.guru99.com/test/login.html webbplats, här är hur vi hittar fältet Text och lösenord och skriver in text i Selen.

  1. Hitta textfältet "E-postadress" med id-sökaren.
  2. Hitta fältet "Lösenord" med hjälp av namnsökaren
  3. Ange text i "E-postadress" med Selen-sändnyckelmetoden.
  4. Ange ett lösenord i fältet "Lösenord" med metoden sendKeys ().

Ta bort värden i inmatningsrutorna

Den clear () metoden används för att ta bort texten i en inmatningsruta. Den här metoden behöver ingen parameter . Kodavsnittet nedan rensar texten från fältet E-post eller Lösenord

Knappar

Klicka på Selenium-knappen genom att klicka () -metoden.

I exemplet ovan

  1. Hitta knappen för att logga in
  2. Klicka på knappen "Logga in" på webbplatsens inloggningssida för att logga in på webbplatsen.

Skicka knappar

Skicka-knapparna används för att skicka hela formuläret till servern. Vi kan antingen använda klickmetoden () på webbelementet som en vanlig knapp som vi har gjort ovan eller använda metoden submit () på vilket webbelement som helst i formuläret eller på själva skicka knappen.

När submit () används kommer WebDriver att slå upp DOM för att veta vilken form elementet tillhör och sedan utlösa dess inlämningsfunktion.

Komplett kod

Här är den fullständiga arbetskoden

importera org.openqa.selenium.By;importera org.openqa.selenium.WebDriver;importera org.openqa.selenium.chrome.ChromeDriver;importera org.openqa.selenium. *;offentlig klassformulär {public static void main (String [] args) {// deklaration och instantiering av objekt / variablerSystem.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-drivrutin = ny ChromeDriver ();SträngbasUrl = "http://demo.guru99.com/test/login.html";driver.get (baseUrl);// Hämta WebElement som motsvarar e-postadressen (TextField)WebElement-e-post = driver.findElement (By.id ("e-post"));// Hämta WebElement som motsvarar lösenordsfältetWebElement-lösenord = driver.findElement (By.name ("passwd"));email.sendKeys ("Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det.");password.sendKeys ("abcdefghlkjl");System.out.println ("Textfältuppsättning");// Ta bort värden i textrutanemail.clear ();password.clear ();System.out.println ("Textfält rensat");// Hitta knappen SkickaWebElement-inloggning = driver.findElement (By.id ("SubmitLogin"));// Använda klickmetoden för att skicka formuläremail.sendKeys ("Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det."); password.sendKeys ("abcdefghlkjl"); login.click (); System.out.println ("Inloggning klar med klick"); // använder inlämningsmetoden för att skicka in formuläret. Skicka används på lösenordsfältet driver.get (baseUrl); driver.findElement (By.id ("e-post")). sendKeys ("Den här e-postadressen är skyddad från spamrobotar. Du måste ha Javascript aktiverat för att kunna se det."); driver.findElement (By.name ("passwd")). sendKeys ("abcdefghlkjl"); driver.findElement (By.id ("SubmitLogin")). submit (); System.out.println ("Inloggning klar med Skicka"); //driver.close (); }}

Felsökning

Om du stöter på NoSuchElementException () när du hittar element betyder det att elementet inte finns på sidan vid den punkt där webbdrivrutinen öppnade sidan.

  1. Kontrollera din sökare igen med Firepath eller Inspect Element i Chrome.
  2. Kontrollera om värdet du använde i koden skiljer sig från värdet för elementet i Firepath nu.
  3. Vissa egenskaper är dynamiska för få element. Om du tycker att värdet är annorlunda och förändras dynamiskt, överväg att använda By.xpath () eller By.cssSelector () som är mer pålitliga men komplexa sätt.
  4. Ibland kan det också vara ett vänteproblem, dvs. webbdrivrutinen körde din kod redan innan sidan laddades helt, etc.
  5. Lägg till en väntan före findElement () med implicit eller uttrycklig väntan.

Sammanfattning

  • Tabellen nedan sammanfattar kommandona för åtkomst till varje typ av element som diskuterats ovan
Element Kommando Beskrivning
Inmatningslåda sendKeys () används för att ange värden i textrutor
klar() används för att rensa textrutor för dess nuvarande värde
Länkar klick() används för att klicka på länken och vänta på att sidan laddas till innan du fortsätter till nästa kommando.
Skickaknapp Skicka in()
  • WebDriver tillåter val av mer än ett alternativ i ett flera SELECT-element.
  • Du kan använda metoden () för valfritt element i formuläret. WebDriver aktiverar automatiskt inlämningsfunktionen för det formulär där elementet tillhör.