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.

  • โœ… Temel ฤฐlke: FindElement, eลŸleลŸen ilk WebElement'i dรถndรผrรผr; FindElements ise sฤฑfฤฑrdan baลŸlayarak indekslenmiลŸ bir liste, yani bir dizi dรถndรผrรผr.
  • โš ๏ธ ฤฐstisna iลŸleme: FindElement, eลŸleลŸme bulunmadฤฑฤŸฤฑnda NoSuchElementException hatasฤฑ fฤฑrlatฤฑrken, FindElements hata vermek yerine boลŸ bir liste dรถndรผrรผr.
  • ๐Ÿงญ Konum Belirleme Stratejileri: Kimlik, Ad, Sฤฑnฤฑf Adฤฑ, Etiket Adฤฑ, BaฤŸlantฤฑ Metni, Kฤฑsmi BaฤŸlantฤฑ Metni ve XPath arasฤฑndan seรงim yapฤฑn.
  • ๐Ÿงฉ Uygulama OdaฤŸฤฑ: WebDriver komut dosyalarฤฑnda hedef รถฤŸelere gรผvenilir bir ลŸekilde ulaลŸmak iรงin benzersiz bir konum belirleyici deฤŸerine sahip bir By nesnesi iletin.
  • ???? Pratik uygulama: ร‡alฤฑลŸma Java ร–rnekler, bir demo sayfasฤฑnda radyo dรผฤŸmesine tฤฑklamayฤฑ ve bir รถฤŸe listesini yinelemeyi gรถstermektedir.

XPath'de FindElement Selenium

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:

Find Element ile Find Elements in arasฤฑndaki fark Selenium

ร–ฤŸ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.

SSS

Kullanฤฑm Selenium รถrtรผk veya aรงฤฑk beklemeler Bu nedenle sรผrรผcรผ, รถฤŸe gรถrรผnene kadar sayfayฤฑ yoklar. WebDriverWait ile aรงฤฑk beklemeler ve beklenen koลŸullar, dinamik, AJAX tabanlฤฑ sayfalar iรงin en gรผvenilir yaklaลŸฤฑmdฤฑr.

ID, tarayฤฑcฤฑlar tarafฤฑndan doฤŸrudan indekslendiฤŸi iรงin en hฤฑzlฤฑ ve en gรผvenilir konum belirleyicidir. CSS seรงicileri genellikle XPath'ten daha hฤฑzlฤฑdฤฑr, bu nedenle XPath'i benzersiz bir ID, Ad veya sฤฑnฤฑfฤฑn bulunmadฤฑฤŸฤฑ durumlar iรงin saklayฤฑn.

Evet. Yapay zeka destekli test asistanlarฤฑ, DOM'u analiz edebilir ve otomatik olarak kararlฤฑ XPath veya CSS konum belirleyicileri รถnerebilir, bรถylece manuel inceleme sรผresini azaltabilir. Revรœretim test paketlerine eklenmeden รถnce, oluลŸturulan konum belirleyicilerin benzersizliฤŸi kontrol edildi.

Kendi kendini onaran รงerรงeveler, bir kullanฤฑcฤฑ arayรผzรผ deฤŸiลŸikliฤŸinden sonra bir konum belirleyicinin bozulduฤŸunu tespit etmek ve otomatik olarak en yakฤฑn eลŸleลŸen รถฤŸeyi deฤŸiลŸtirmek iรงin yapay zekayฤฑ kullanฤฑr. Bu, sฤฑk sฤฑk deฤŸiลŸen รถฤŸe รถzniteliklerinden kaynaklanan test bakฤฑmฤฑnฤฑ azaltฤฑr.

Bu yazฤฑyฤฑ ลŸu ลŸekilde รถzetleyin: