XPath'de FindElement Selenium
โก Akฤฑllฤฑ รzet
XPath'de FindElement Selenium `By` komutu, bir sayfadaki tek bir web รถฤesini benzersiz ลekilde tanฤฑmlarken, `FindElements` komutu eลleลen รถฤelerin eksiksiz bir listesini dรถndรผrรผr. Her iki komut da ID, Name, Class Name ve XPath stratejilerini kapsayan bir `By` konum belirleyici nesnesi kabul eder.
In Selenium WebDriver, FindElement hem de FindElementler Bunlar, bir sayfadaki web รถฤelerini, tฤฑklama veya metin giriลi gibi herhangi bir iลlem gerรงekleลtirilmeden รถnce bulmak iรงin kullanฤฑlan temel komutlardฤฑr.
Neden Elemanlarฤฑ Bul komutuna ihtiyacฤฑnฤฑz var?
Bir web sayfasฤฑyla etkileลim kurmak iรงin kullanฤฑcฤฑnฤฑn รถncelikle web รถฤesini bulmasฤฑ gerekir. "รฤeyi Bul" komutu, web sayfasฤฑ iรงindeki tek bir web รถฤesini benzersiz bir ลekilde tanฤฑmlamak iรงin kullanฤฑlฤฑrken, "รฤeleri Bul" komutu bir web รถฤesi listesini tanฤฑmlamak iรงin kullanฤฑlฤฑr. Bir รถฤe, birden fazla yรถntem kullanฤฑlarak tanฤฑmlanabilir. konum belirleme stratejileri Kimlik numarasฤฑ, ad, sฤฑnฤฑf adฤฑ, baฤlantฤฑ metni, kฤฑsmi baฤlantฤฑ metni, etiket adฤฑ gibi XPath.
FindElement komutunun sรถz dizimi
Aลaฤฤฑda FindElement komutunun sรถzdizimi verilmiลtir. Selenium Web Sรผrรผcรผsรผ:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
FindElement komutu, parametre olarak By nesnesini alฤฑr ve WebElement tรผrรผnde tek bir nesne dรถndรผrรผr. By nesnesi ise ID, Name, Class Name, XPath vb. รงeลitli konum belirleme stratejileriyle kullanฤฑlabilir.
Konum Belirleme Stratejisi aลaฤฤฑdaki deฤerlerden herhangi biri olabilir:
- ID
- ฤฐsim
- Sฤฑnฤฑf adฤฑ
- Etiket adฤฑ
- baฤlantฤฑ Metni
- Kฤฑsmi Baฤlantฤฑ Metni
- XPath
Konum Belirleyici Deฤer, bir web รถฤesinin tanฤฑmlanabileceฤi benzersiz deฤerdir. Web รถฤelerinin Kimlik veya Ad gibi belirli รถzellikler kullanฤฑlarak benzersiz bir ลekilde tanฤฑmlanabilir olmasฤฑnฤฑ saฤlamak geliลtiricilerin ve test uzmanlarฤฑnฤฑn sorumluluฤundadฤฑr.
รrnek:
WebElement loginLink = driver.findElement(By.linkText("Login"));
รrnek: รฤeyi Bul Selenium
Aลaฤฤฑdaki รถrnek uygulama, FindElement komutunun nasฤฑl รงalฤฑลtฤฑฤฤฑnฤฑ gรถstermek iรงin kullanฤฑlmฤฑลtฤฑr:
https://demo.guru99.com/test/ajax.html
Senaryo:
1 Adฤฑm: AUT'u aรงฤฑn
2 Adฤฑm: Radyo dรผฤmesini bulun ve tฤฑklayฤฑn, ardฤฑndan Onay dรผฤmesine tฤฑklayฤฑn.
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 komutunun sรถz dizimi
Yalnฤฑzca ilk รถฤeyi deฤil, bir konum belirleyiciyle eลleลen tรผm รถฤeleri bulmanฤฑz gerektiฤinde FindElements iลlevini kullanฤฑn. Sรถzdizimi aลaฤฤฑdadฤฑr:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElements komutu, parametre olarak By nesnesini alฤฑr ve web รถฤelerinin bir listesini dรถndรผrรผr. Verilen konum belirleme stratejisi ve konum belirleme deฤeri kullanฤฑlarak hiรงbir รถฤe bulunamazsa boล bir liste dรถndรผrรผr.
รrnek:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
รrnek: รฤeleri Bul Selenium
Aynฤฑ demo uygulama, FindElements fonksiyonunun eลleลen รถฤelerin listesi รผzerinde nasฤฑl yineleme yaptฤฑฤฤฑnฤฑ gรถstermek iรงin kullanฤฑlmฤฑลtฤฑr.
Senaryo:
1 Adฤฑm: Aรงฤฑn URL Test Edilen Uygulama iรงin
2 Adฤฑm: Radyo dรผฤmelerinin metinlerini bulun ve รงฤฑktฤฑ konsoluna yazdฤฑrฤฑn.
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 ile Find Elements arasฤฑndaki fark
Aลaฤฤฑda, "รฤe Bul" ve "รฤeleri Bul" komutlarฤฑ arasฤฑndaki temel farklar yer almaktadฤฑr:
| รฤe Bul | รฤeleri Bul |
|---|---|
| Aynฤฑ konum belirleyiciyle birden fazla web รถฤesi bulunursa, ilk web รถฤesini dรถndรผrรผr. | Web รถฤelerinin bir listesini dรถndรผrรผr |
| Konum belirleme stratejisine uyan hiรงbir รถฤe yoksa NoSuchElementException istisnasฤฑ fฤฑrlatฤฑr. | Konum belirleme stratejisiyle eลleลen web รถฤesi yoksa boล bir liste dรถndรผrรผr |
| XPath ile รถฤe bulma iลlemi yalnฤฑzca tek bir web รถฤesi bulur. | Konum belirleme stratejisiyle eลleลen bir dizi รถฤe bulacaktฤฑr. |
| Uygulanamaz | Her web รถฤesi, tฤฑpkฤฑ bir dizi gibi, 0'dan baลlayarak bir sayฤฑ ile indekslenir. |


