FindElement XPath-funktiolla Selenium
Miksi tarvitset Etsi elementti(t) -komennon?
Vuorovaikutus verkkosivun kanssa edellyttää, että käyttäjä paikantaa verkkoelementin. Find Element -komentoa käytetään yksilöimään (yksi) web-elementti verkkosivulla. Sen sijaan Etsi elementit -komentoa käytetään yksilöimään Web-sivun verkkoelementtien luettelo. On olemassa useita tapoja yksilöidä Web-elementti verkkosivulla, kuten tunnus, nimi, luokan nimi, linkkiteksti, osittainen linkin teksti, tunnisteen nimi ja XPATH.
FindElement-komennon syntaksi
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium Find Element -komento ottaa By-objektin parametriksi ja palauttaa objektin, jonka tyyppi on luettelo WebElement Selenium. Objektin mukaan puolestaan voidaan käyttää erilaisia paikannusstrategioita, kuten etsi elementti ID:n mukaan Selenium, Nimi, Luokan nimi, XPATH jne. Alla on FindElement-komennon syntaksi Selenium web-ohjain.
Paikannusstrategia voi olla mikä tahansa seuraavista arvoista.
- ID
- Selenium etsi elementti nimellä
- Luokan nimi
- Merkin nimi
- linkin teksti
- Osittainen linkkiteksti
- XPATH
Locator-arvo on ainutlaatuinen arvo, jonka avulla verkkoelementti voidaan tunnistaa. Kehittäjien ja testaajien vastuulla on varmistaa, että verkkoelementit ovat yksilöitävissä tiettyjen ominaisuuksien, kuten tunnuksen tai nimen, avulla.
Esimerkiksi:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Esimerkki: Etsi elementti Selenium
Seuraavaa sovellusta käytetään demotarkoituksiin
https://demo.guru99.com/test/ajax.html
Skenaario:
Vaihe 1: Avaa AUT
Vaihe 2: Etsi ja napsauta valintanappia
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-komennon syntaksi
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElements sisään Selenium komento ottaa By-objektin parametriksi ja palauttaa luettelon verkkoelementeistä. Se palauttaa tyhjän luettelon, jos elementtejä ei löydy annetulla paikannusstrategialla ja paikannusarvolla. Alla on etsi elementtien komennon syntaksi.
Esimerkiksi:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Esimerkki: Etsi elementtejä Selenium
Skenaario:
Vaihe 1: Avaa testattavan sovelluksen URL-osoite
Vaihe 1: Etsi valintanappien teksti ja tulosta se tulostuskonsoliin
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")); } } }
Etsi elementti Vs Etsi elementtejä
Alla on tärkeimmät erot Find element- ja Find elements -komentojen välillä.
Etsi elementti | Etsi elementtejä |
---|---|
Palauttaa ensimmäisen verkkoelementin, jos samalla paikantimella on useita verkkoelementtejä | Palauttaa luettelon verkkoelementeistä |
Heittää poikkeuksen NoSuchElementException, jos paikannusstrategiaa vastaavia elementtejä ei ole | Palauttaa tyhjän luettelon, jos paikannusstrategiaa vastaavia verkkoelementtejä ei ole |
Etsi elementti XPathin avulla löytää vain yhden verkkoelementin | Se löytää kokoelman elementtejä, jotka vastaavat paikannusstrategiaa. |
Ei sovellettavissa | Jokainen Web-elementti indeksoidaan numerolla, joka alkaa 0:sta, aivan kuten taulukko |
Yhteenveto
- Etsi elementti -komento palauttaa verkkoelementin, joka vastaa web-sivun ensimmäistä eniten elementtiä.
- Find Elements -komento palauttaa luettelon ehtoja vastaavista verkkoelementeistä.
- Etsi elementti XPathin avulla Selenium komento heittää NoSuchElementException, jos se ei löydä ehtoja vastaavaa elementtiä.
- Find Elements -komento palauttaa tyhjän luettelon Selenium jos kriteereitä vastaavia elementtejä ei ole