WebElementi Selenium

โšก Akฤฑllฤฑ ร–zet

WebElementi Selenium Bu yapฤฑ, her form denetimini programlanabilir bir nesne olarak temsil eder ve test uzmanlarฤฑnฤฑn findElement, sendKeys, click, clear ve submit yรถntemlerini kullanarak metin alanlarฤฑ, onay kutularฤฑ, radyo dรผฤŸmeleri ve gรถnderim รถฤŸeleriyle etkileลŸim kurmasฤฑnฤฑ saฤŸlar. Java kod รถrnekleri.

  • ๐Ÿงฉ Konum Belirleyici Hassasiyeti: DOM ile istikrarlฤฑ etkileลŸim saฤŸlamak iรงin form รถฤŸelerini `findElement()` yรถntemi aracฤฑlฤฑฤŸฤฑyla kimlik, ad, XPath veya CSS seรงici kullanarak tanฤฑmlayฤฑn.
  • โœ๏ธ GiriลŸ ฤฐลŸleme: Otomatik yรผrรผtme sฤฑrasฤฑnda mevcut deฤŸerlerin รผzerine yazmadan, sendKeys() iลŸlevini kullanarak alanlara dรผzenlenebilir metin gรถnderin.
  • ๐Ÿงน Alan Sฤฑfฤฑrlama: Verileri yeniden girmeden รถnce clear() yรถntemiyle giriลŸ kutularฤฑnฤฑ temizleyin; bu, sonraki doฤŸrulamalarda kalan deฤŸerlerin oluลŸmasฤฑnฤฑ รถnler.
  • ๐Ÿ–ฑ๏ธ DรผฤŸme EtkileลŸimi: ฤฐlgili WebElement referansฤฑndaki click() yรถntemi aracฤฑlฤฑฤŸฤฑyla oturum aรงma veya gezinme iลŸlemlerini tetikleyin.
  • ๐Ÿ“จ Form gรถnderme: Form iรงindeki herhangi bir รถฤŸede `submit()` iลŸlevini kullanฤฑn; bรถylece WebDriver otomatik olarak รผst formun gรถnderim iลŸleyicisini gรถnderir.
  • ๐Ÿ›ก๏ธ Denge ฤฐpucu: Dinamik olarak yรผklenen sayfalarda NoSuchElementException hatasฤฑnฤฑ รถnlemek iรงin findElement() รงaฤŸrฤฑlarฤฑndan รถnce รถrtรผlรผ veya aรงฤฑk bekleme sรผreleri ekleyin.

WebElementi Selenium

WebElementi Selenium

Formlar, web sitesi ziyaretรงilerinden bilgi toplayan temel web รถฤŸeleridir. Web formlarฤฑ, metin kutularฤฑ, parola alanlarฤฑ, onay kutularฤฑ, radyo dรผฤŸmeleri, aรงฤฑlฤฑr menรผler ve dosya giriลŸleri gibi farklฤฑ grafik kullanฤฑcฤฑ arayรผzรผ (GUI) kontrollerini iรงerir.

Bu eฤŸitim, her bir form รถฤŸesine nasฤฑl eriลŸileceฤŸini aรงฤฑklamaktadฤฑr. Selenium Web Sรผrรผcรผsรผ Java. Selenium her form รถฤŸesini WebElement nesnesi olarak kapsรผller. Bu, metin girme, dรผฤŸmelere tฤฑklama ve form gรถnderme gibi รถฤŸeleri bulmak ve bunlar รผzerinde iลŸlem yapmak iรงin bir API saฤŸlar. AลŸaฤŸฤฑdaki bรถlรผmler, her form รถฤŸesi iรงin mevcut olan yรถntemleri kapsamaktadฤฑr.

WebElement'e GiriลŸ FindElement,FindElements

WebElement'e giriลŸ, findElement(), findElements()

Selenium WebDriver, basit bir form รถฤŸesini bir nesne olarak temsil eder. WebElement.

WebDriver, form รถฤŸelerini ID, Name, Class gibi web รถฤŸesinin farklฤฑ รถzelliklerini kullanarak tanฤฑmlar. XPathEtiket adฤฑ, CSS seรงicileri ve baฤŸlantฤฑ metni.

WebDriver, รถฤŸeleri bulmak iรงin aลŸaฤŸฤฑdaki iki WebElement yรถntemini sunar:

  • findElement() โ€“ Tek bir web รถฤŸesini bulur ve onu WebElement olarak dรถndรผrรผr. Selenium nesne.
  • findElements() โ€“ konum belirleyici รถlรงรผtleriyle eลŸleลŸen WebElement nesnelerinin bir listesini dรถndรผrรผr.

AลŸaฤŸฤฑdaki รถrnek, findElement() yรถntemini kullanarak bir web sayfasฤฑndaki tek bir รถฤŸeyi, yani bir metin alanฤฑnฤฑ, WebElement nesnesi olarak nasฤฑl alacaฤŸฤฑnฤฑzฤฑ gรถstermektedir. Birden fazla รถฤŸeyi bulmak iรงin kullanฤฑlan findElements() yรถntemi sonraki eฤŸitimlerde ele alฤฑnacaktฤฑr.

) 1 Adฤฑm WebElement nesneleri oluลŸturmak iรงin gerekli paketi iรงe aktarฤฑn.

) 2 Adฤฑm AลŸaฤŸฤฑda gรถsterildiฤŸi gibi, WebDriver sฤฑnฤฑfฤฑnda bulunan findElement() yรถntemini รงaฤŸฤฑrarak bir WebElement nesnesi alabilirsiniz.

Selenium GiriลŸ metni

GiriลŸ kutularฤฑ ลŸu iki tรผrden birine karลŸฤฑlฤฑk gelir:

  1. Metin Alanlarฤฑ - Selenium Yazฤฑlan deฤŸerleri kabul eden ve girildiฤŸi gibi gรถrรผntรผleyen metin giriลŸ kutularฤฑ.
  2. ลžifre Alanlarฤฑ โ€“ Yazฤฑlan deฤŸerleri kabul eden ancak hassas bilgileri gizlemek iรงin bunlarฤฑ bir dizi รถzel karakter (genellikle nokta veya yฤฑldฤฑz iลŸareti) olarak maskeleyen metin kutularฤฑ.

    Selenium GiriลŸ metni

Konumlandฤฑrฤฑcฤฑlar

`findElement()` metodu, รถฤŸeyi gรถsteren bir konum belirleyici olan tek bir parametre alฤฑr. `By.id()`, `By.name()`, `By.xpath()` ve `By.cssSelector()` dahil olmak รผzere farklฤฑ konum belirleyiciler, `id`, `name` veya `path` gibi รถzelliklerini kullanarak sayfadaki รถฤŸeleri bulur.

ร–ฤŸelerin kimliฤŸini (id), XPath'ini ve diฤŸer konum belirleyici deฤŸerlerini elde etmek iรงin FirePath gibi eklentiler kullanabilirsiniz.

ร–rnek siteyi kullanma https://demo.guru99.com/test/login.htmlAลŸaฤŸฤฑdaki kod, "E-posta Adresi" metin alanฤฑnฤฑ id konum belirleyicisini kullanarak, "ลžifre" alanฤฑnฤฑ ise name konum belirleyicisini kullanarak bulur.

Konumlandฤฑrฤฑcฤฑlar

  1. E-posta metin alanฤฑ, kimlik numarasฤฑna gรถre bulunur.
  2. ลžifre alanฤฑ isme gรถre bulunur.

anahtarlarฤฑ gรถnder Selenium

sendKeys() iรงinde Selenium `sendKeys()` yรถntemi, test yรผrรผtme sฤฑrasฤฑnda metin ve parola alanlarฤฑna dรผzenlenebilir iรงerik girmek iรงin kullanฤฑlฤฑr. Bu alanlar, ad, sฤฑnฤฑf ve kimlik gibi konum belirleyiciler aracฤฑlฤฑฤŸฤฑyla tanฤฑmlanฤฑr. Bu yรถntem, `WebElement` nesnesinde kullanฤฑlabilir. `type` yรถnteminin aksine, `sendKeys()` bir metin kutusundaki mevcut metni deฤŸiลŸtirmez.

Metin Nasฤฑl Girilir? Selenium

Metin alanlarฤฑna ve parola alanlarฤฑna metin girmek iรงin, WebElement'te bulunan sendKeys() yรถntemi kullanฤฑlฤฑr. Selenium.

Aynฤฑ รถrneฤŸi kullanarak https://demo.guru99.com/test/login.htmlAลŸaฤŸฤฑdaki kod parรงasฤฑ, metin alanฤฑnฤฑ ve parola alanฤฑnฤฑ bulur ve bunlara metin girer. Selenium.

ฤฐรงindeki metin Selenium

  1. Kimlik bulucu รถzelliฤŸini kullanarak "E-posta Adresi" metin alanฤฑnฤฑ bulun.
  2. ฤฐsim bulucu รถzelliฤŸini kullanarak "ลžifre" alanฤฑnฤฑ bulun.
  3. "E-posta Adresi"ne metni girin Selenium sendKeys metodu.
  4. sendKeys() yรถntemini kullanarak โ€œลžifreโ€ alanฤฑna bir ลŸifre girin.

GiriลŸteki DeฤŸerlerin Silinmesi Boxes

MKS aรงฤฑk() Bu yรถntem, giriลŸ kutusunun iรงindeki metni siler. Bu yรถntem parametre gerektirmez. AลŸaฤŸฤฑdaki kod parรงasฤฑ, E-posta veya ลžifre alanlarฤฑndaki metni siler.

GiriลŸteki DeฤŸerlerin Silinmesi Boxes

Selenium DรผฤŸmelere tฤฑklayฤฑn

MKS Selenium Tฤฑklama dรผฤŸmesine click() metodu kullanฤฑlarak eriลŸilir.

Yukarฤฑdaki รถrnekte

  1. GiriลŸ yap butonunu bulun.
  2. Siteye giriลŸ sayfasฤฑndaki "GiriลŸ Yap" dรผฤŸmesine tฤฑklayarak kimliฤŸinizi doฤŸrulayฤฑn.

Selenium DรผฤŸmelere tฤฑklayฤฑn

Selenium Gรถnder DรผฤŸmeleri

Gรถnder dรผฤŸmeleri, formun tamamฤฑnฤฑ sunucuya gรถnderir. Yukarฤฑda gรถsterildiฤŸi gibi WebElement รผzerinde click() yรถntemini รงaฤŸฤฑrabilir veya formdaki herhangi bir รถฤŸe รผzerinde veya gรถnder dรผฤŸmesinin kendisinde submit() yรถntemini kullanabilirsiniz.

Selenium Gรถnder DรผฤŸmeleri

`submit()` kullanฤฑldฤฑฤŸฤฑnda, WebDriver, รถฤŸenin ait olduฤŸu formu belirlemek iรงin DOM'a bakar ve ardฤฑndan `submit` iลŸlevini tetikler.

Tamamla Code

ฤฐลŸte รงalฤฑลŸan kodun tamamฤฑ.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

Sorun giderme

ร–ฤŸeleri ararken NoSuchElementException() hatasฤฑyla karลŸฤฑlaลŸฤฑrsanฤฑz, sรถz konusu รถฤŸe WebDriver'ฤฑn ona eriลŸtiฤŸi anda sayfada mevcut deฤŸildir.

  1. FirePath'i kullanarak veya Chrome'daki "ร–ฤŸeyi ฤฐncele" seรงeneฤŸini kullanarak konum belirleyicinizi tekrar kontrol edin.
  2. Kodda kullanฤฑlan deฤŸerin, FirePath'te gรถrรผnen รถฤŸenin mevcut deฤŸerinden farklฤฑ olup olmadฤฑฤŸฤฑnฤฑ kontrol edin.
  3. Bazฤฑ รถzellikler belirli รถฤŸeler iรงin dinamiktir. Bir deฤŸer dinamik olarak deฤŸiลŸiyorsa, daha gรผvenilir ancak biraz daha karmaลŸฤฑk olan By.xpath() veya By.cssSelector() yรถntemlerine geรงin.
  4. Bazen sorun bir bekleme koลŸulundan kaynaklanฤฑr; WebDriver, sayfa yรผklenmesi tamamlanmadan รถnce kodu รงalฤฑลŸtฤฑrabilir.
  5. ร–rtรผlรผ veya aรงฤฑk beklemeleri kullanarak findElement() iลŸlevinden รถnce bir bekleme ekleyin.

ร–ZET

  • AลŸaฤŸฤฑdaki tabloda, yukarฤฑda ele alฤฑnan her bir รถฤŸe tรผrรผne eriลŸmek iรงin kullanฤฑlan komutlar รถzetlenmiลŸtir.
Eleman Komuta Aรงฤฑklama
GiriลŸ Box anahtarlarฤฑ gรถnder() Metin kutularฤฑna deฤŸer girmek iรงin kullanฤฑlฤฑr.
aรงฤฑk() Metin kutularฤฑnฤฑn mevcut deฤŸerlerini temizlemek iรงin kullanฤฑlฤฑr.
BaฤŸlantฤฑlar Tฤฑklayฤฑn() BaฤŸlantฤฑya tฤฑkladฤฑktan sonra bir sonraki komuta geรงmeden รถnce sayfa yรผklemesinin tamamlanmasฤฑnฤฑ beklemek iรงin kullanฤฑlฤฑr.
DรผฤŸmesi Gรถnder Sunmak() Ana formun gรถnderim iลŸleyicisini tetikleyerek formu gรถndermek iรงin kullanฤฑlฤฑr.
  • WebDriver, รงoklu bir SELECT รถฤŸesinde birden fazla seรงeneฤŸin seรงilmesine olanak tanฤฑr.
  • Form iรงindeki herhangi bir รถฤŸe รผzerinde `submit()` yรถntemini kullanabilirsiniz. WebDriver, รถฤŸenin ait olduฤŸu formun `submit` iลŸlevini otomatik olarak tetikler.

SSS

`findElement()` yรถntemi, eลŸleลŸen ilk WebElement'i dรถndรผrรผr ve hiรงbiri bulunmadฤฑฤŸฤฑnda `NoSuchElementException` hatasฤฑ fฤฑrlatฤฑr. `findElements()` yรถntemi, eลŸleลŸen WebElement'lerin bir listesini dรถndรผrรผr ve hiรงbir รถฤŸe konum belirleyiciyle eลŸleลŸmediฤŸinde boลŸ bir liste dรถndรผrรผr.

WebElement bir Selenium sendKeys, click ve clear gibi otomasyon yรถntemlerini ortaya รงฤฑkaran bir sarmalayฤฑcฤฑ. HTML รถฤŸesi, temel DOM dรผฤŸรผmรผdรผr. WebDriver, DOM dรผฤŸรผmรผnรผ bulur ve etkileลŸim iรงin bir WebElement referansฤฑ dรถndรผrรผr.

Evet. Yapay zeka destekli araรงlar DOM'u analiz eder ve kimlik, ad, gรถreceli XPath veya CSS seรงicilerini kullanarak kararlฤฑ konum belirleyiciler รถnerir. Benzersiz รถznitelik kombinasyonlarฤฑnฤฑ tespit ederek ve bir รถznitelik deฤŸiลŸtiฤŸinde yedek รงรถzรผmler รถnererek konum belirleyicilerin kฤฑrฤฑlganlฤฑฤŸฤฑnฤฑ azaltฤฑrlar.

Evet. Yapay zeka destekli kendi kendini onaran konum belirleyiciler, bir รถzellik deฤŸiลŸtiฤŸinde WebElement'i otomatik olarak yeniden baฤŸlar. Bu, istikrarsฤฑz hatalarฤฑ azaltฤฑr, bakฤฑm รงabasฤฑnฤฑ dรผลŸรผrรผr ve sรผrekliliฤŸi saฤŸlar. Selenium ร‡evik geliลŸtirme dรถngรผlerinde sฤฑk yapฤฑlan kullanฤฑcฤฑ arayรผzรผ gรผncellemelerine raฤŸmen istikrarlฤฑ kalan paketler.

Sฤฑk karลŸฤฑlaลŸฤฑlan WebElement istisnalarฤฑ arasฤฑnda StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException ve TimeoutException bulunur. Her biri, beklemeler veya yenilenmiลŸ รถฤŸe referanslarฤฑyla ele alฤฑnmasฤฑ gereken farklฤฑ bir DOM, gรถrรผnรผrlรผk veya senkronizasyon sorununu gรถsterir.

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