XPath-i abil FindElement Selenium
Miks vajate käsku Otsi element(id)?
Veebilehega suhtlemine nõuab, et kasutaja tuvastaks veebielemendi asukoha. Otsi elementi kasutatakse (ühe) veebielemendi unikaalseks tuvastamiseks veebilehel. Seevastu käsku Otsi elemente kasutatakse veebilehel olevate veebielementide loendi unikaalseks tuvastamiseks. Veebielemendi unikaalseks tuvastamiseks veebilehel on mitu võimalust, näiteks ID, nimi, klassi nimi, lingi tekst, osaline lingi tekst, sildi nimi ja XPATH.
FindElement käsu süntaks
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Selenium Käsk Find Element võtab parameetrina sisse objekti By ja tagastab objekti tüübiloendiga WebElement in Selenium. Objekti järgi saab omakorda kasutada erinevate lokaatoristrateegiatega, näiteks elemendi leidmine ID järgi Selenium, nimi, klassi nimi, XPATH jne. Allpool on käsu FindElement süntaks Selenium veebidraiver.
Lokaatori strateegia võib olla mis tahes järgmistest väärtustest.
- ID
- Selenium otsi element nime järgi
- Klassi nimi
- Sildi nimi
- tekst link
- Osaline lingi tekst
- XPATH
Lokaatori väärtus on kordumatu väärtus, mille abil saab veebielementi tuvastada. Arendajad ja testijad vastutavad selle eest, et veebielemendid oleksid teatud atribuutide (nt ID või nime) abil üheselt tuvastatavad.
Näide:
WebElement loginLink = driver.findElement(By.linkText("Login"));
Näide: otsige elementi Selenium
Järgmist rakendust kasutatakse demo eesmärgil
https://demo.guru99.com/test/ajax.html
Stsenaarium:
Samm 1: Avage AUT
Samm 2: Otsige üles ja klõpsake raadionuppu
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(); } }
FindElementsi käsu süntaks
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElements sisse Selenium käsk võtab parameetrina sisse objekti By ja tagastab veebielementide loendi. Tagastab tühja loendi, kui antud lokaatoristrateegia ja asukohaväärtuse abil elemente ei leitud. Allpool on käsu elementide leidmise süntaks.
Näide:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Näide: otsige elemente Selenium
Stsenaarium:
Samm 1: Avage testitava rakenduse URL
Samm 1: Otsige üles raadionuppude tekst ja printige see väljundkonsoolile
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")); } } }
Otsi element Vs Otsi elemente
Allpool on toodud peamised erinevused elemendi otsimise ja elementide leidmise käskude vahel.
Leidke element | Otsige elemente |
---|---|
Tagastab esimese kõige veebielemendi, kui sama lokaatoriga on leitud mitu veebielementi | Tagastab veebielementide loendi |
Viskab erandi NoSuchElementException, kui lokaatoristrateegiale vastavaid elemente pole | Tagastab tühja loendi, kui lokaatoristrateegiale vastavaid veebielemente pole |
Otsi element XPathi abil leiab ainult ühe veebielemendi | See leiab elementide kogumi, mis vastavad asukoha määramise strateegiale. |
Ei kasuta | Iga veebielement on indekseeritud numbriga, mis algab 0-st, nagu massiiv |
kokkuvõte
- Elemendi otsimise käsk tagastab veebielemendi, mis vastab veebilehel kõige esimesele elemendile.
- Käsk Find Elements tagastab kriteeriumidele vastavate veebielementide loendi.
- Leidke element XPathi järgi Selenium käsk viskab NoSuchElementException, kui ta ei leia kriteeriumidele vastavat elementi.
- Elementide otsimise käsk tagastab tühja loendi Selenium kui kriteeriumidele vastavaid elemente pole