FindElementer i Selenium – FindElement af XPath
Hvorfor har du brug for kommandoen Find Element(s)?
Interaktion med en webside kræver, at en bruger finder webelementet. Find Element-kommandoen bruges til entydigt at identificere et (et) webelement på websiden. Hvorimod Find Elements-kommandoen bruges til entydigt at identificere listen over webelementer på websiden. Der er flere måder til entydigt at identificere et webelement på websiden, såsom ID, navn, klassenavn, linktekst, delvis linktekst, tagnavn og XPATH.
FindElement kommandosyntaks
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium Find Element-kommandoen tager By-objektet ind som parameter og returnerer et objekt af typen liste WebElement i Selenium. Efter objekt kan igen bruges med forskellige lokaliseringsstrategier, såsom find element efter ID Selenium, Navn, Klassenavn, XPATH osv. Nedenfor er syntaksen for FindElement-kommandoen i Selenium web driver.
Locator Strategy kan være en af følgende værdier.
- ID
- Selenium find element ved navn
- Klassens navn
- Tagnavn
- Link Text
- Delvis linktekst
- XPATH
Locator Value er den unikke værdi, hvorved et webelement kan identificeres. Det er udviklernes og testernes ansvar at sikre, at webelementer er unikt identificerbare ved hjælp af visse egenskaber såsom ID eller navn.
Eksempel:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Eksempel: Find element i Selenium
Følgende applikation bruges til demoformål
https://demo.guru99.com/test/ajax.html
Scenario:
Trin 1: Åbn AUT
Trin 2: Find og klik 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 kommandosyntaks
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElementer i Selenium kommandoen tager By-objekt ind som parameteren og returnerer en liste over webelementer. Det returnerer en tom liste, hvis der ikke er nogen elementer fundet ved brug af den givne lokaliseringsstrategi og lokaliseringsværdi. Nedenfor er syntaksen for kommandoen find elements.
Eksempel:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Eksempel: Find elementer i Selenium
Scenario:
Trin 1: Åbn URL'en for Application Under Test
Trin 1: Find teksten til radioknapper, og udskriv den på outputkonsollen
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")); } } }
Find element vs Find elementer
Nedenfor er de største forskelle mellem find element og find elements kommandoer.
Find element | Find elementer |
---|---|
Returnerer det første mest web-element, hvis der er fundet flere web-elementer med den samme locator | Returnerer en liste over webelementer |
Kaster undtagelse NoSuchElementException, hvis der ikke er nogen elementer, der matcher lokaliseringsstrategien | Returnerer en tom liste, hvis der ikke er nogen webelementer, der matcher lokaliseringsstrategien |
Find element af XPath vil kun finde ét webelement | Den vil finde en samling af elementer, hvis matcher lokaliseringsstrategien. |
Gælder ikke | Hvert webelement er indekseret med et tal, der starter fra 0 ligesom en matrix |
Resumé
- Find Element-kommandoen returnerer det webelement, der matcher det første mest element på websiden.
- Find Elements-kommandoen returnerer en liste over webelementer, der matcher kriterierne.
- Find Element by XPath i Selenium kommandoen kaster NoSuchElementException, hvis den ikke finder elementet, der matcher kriterierne.
- Find Elements-kommandoen returnerer en tom liste i Selenium hvis der ikke er elementer, der matcher kriterierne