Hitta element i Selenium – FindElement av XPath
Varför behöver du kommandot Find Element(s)?
Interaktion med en webbsida kräver att en användare hittar webbelementet. Find Element-kommandot används för att unikt identifiera ett (ett) webbelement på webbsidan. Medan kommandot Find Elements används för att unikt identifiera listan med webbelement på webbsidan. Det finns flera sätt att unikt identifiera ett webbelement på webbsidan, som ID, Namn, Klassnamn, Länktext, Partiell Link Text, Tag Name och XPATH.
FindElement kommandosyntax
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium Find Element-kommandot tar in By-objektet som parameter och returnerar ett objekt av typen lista WebElement i Selenium. Per objekt kan i sin tur användas med olika lokaliseringsstrategier såsom hitta element efter ID Selenium, Namn, Klassnamn, XPATH etc. Nedan finns syntaxen för FindElement-kommandot i Selenium webbdrivrutin.
Locator Strategy kan vara något av följande värden.
- ID
- Selenium hitta element efter namn
- Klassnamn
- Taggnamn
- Länktext
- Partiell länktext
- XPATH
Locator Value är det unika värdet med vilket ett webbelement kan identifieras. Det är utvecklarnas och testarnas ansvar att se till att webbelement är unikt identifierbara med hjälp av vissa egenskaper som ID eller namn.
Exempelvis:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Exempel: Hitta element i Selenium
Följande applikation används för demoändamål
https://demo.guru99.com/test/ajax.html
Scenario:
Steg 1: Öppna AUT
Steg 2: Hitta och klicka på alternativknappen
package com.sample.stepdefinitions; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class NameDemo { public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get("https://demo.guru99.com/test/ajax.html"); // Find the radio button for “No” using its ID and click on it driver.findElement(By.id("no")).click(); //Click on Check Button driver.findElement(By.id("buttoncheck")).click(); } }
FindElements kommandosyntax
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Hitta element i Selenium kommandot tar in By objekt som parameter och returnerar en lista med webbelement. Den returnerar en tom lista om det inte finns några element som hittas med den givna lokaliseringsstrategin och lokaliseringsvärdet. Nedan är syntaxen för kommandot find elements.
Exempelvis:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Exempel: Hitta element i Selenium
Scenario:
Steg 1: Öppna URL:en för Application Under Test
Steg 1: Hitta texten för alternativknappar och skriv ut den på utmatningskonsolen
package com.sample.stepdefinitions; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class NameDemo { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/ajax.html"); List<WebElement> elements = driver.findElements(By.name("name")); System.out.println("Number of elements:" +elements.size()); for (int i=0; i<elements.size();i++){ System.out.println("Radio button text:" + elements.get(i).getAttribute("value")); } } }
Hitta element vs Hitta element
Nedan är de stora skillnaderna mellan kommandon hitta element och hitta element.
Hitta element | Hitta element |
---|---|
Returnerar det första webbelementet om det finns flera webbelement som hittas med samma lokaliserare | Returnerar en lista med webbelement |
Kastar undantag NoSuchElementException om det inte finns några element som matchar lokaliseringsstrategin | Returnerar en tom lista om det inte finns några webbelement som matchar lokaliseringsstrategin |
Hitta element av XPath hittar bara ett webbelement | Den kommer att hitta en samling element vars matchar lokaliseringsstrategin. |
Ej tillämplig | Varje webbelement indexeras med ett tal som börjar från 0 precis som en array |
Sammanfattning
- Find Element-kommandot returnerar webbelementet som matchar det första elementet på webbsidan.
- Kommandot Find Elements returnerar en lista över webbelement som matchar kriterierna.
- Hitta Element av XPath i Selenium kommandot kastar NoSuchElementException om det inte hittar elementet som matchar kriterierna.
- Find Elements-kommandot returnerar en tom lista i Selenium om det inte finns några element som matchar kriterierna