WebElementi Selenium

WebElementi Selenium

Formlar, web sitesi ziyaretรงilerinden bilgi almak iรงin temel web รถฤŸeleridir. Web formlarฤฑ, Metin kutularฤฑ, Parola alanlarฤฑ, Onay kutularฤฑ, Radyo dรผฤŸmeleri, aรงฤฑlฤฑr listeler, dosya giriลŸleri vb. gibi farklฤฑ GUI รถฤŸelerine sahiptir.

Bu farklฤฑ form รถฤŸelerine nasฤฑl eriลŸeceฤŸimizi gรถreceฤŸiz. Selenium Web Sรผrรผcรผsรผ Java. Selenium her form รถฤŸesini WebElement nesnesi olarak kapsรผller. ร–ฤŸeleri bulmak ve bunlar รผzerinde iลŸlem yapmak (รถrneฤŸin metin kutularฤฑna metin girmek, dรผฤŸmelere tฤฑklamak vb.) iรงin bir API saฤŸlar. Her form รถฤŸesine eriลŸmek iรงin kullanฤฑlabilecek yรถntemleri gรถreceฤŸiz.

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

Selenium Web Sรผrรผcรผsรผ basit bir form รถฤŸesini bir nesne olarak kapsรผller. WebElement.

WebDriver'ฤฑn form รถฤŸelerini kimlik, ad, sฤฑnฤฑf, XPath, etiket adฤฑ, CSS seรงiciler, baฤŸlantฤฑ metni vb. gibi Web รถฤŸelerinin farklฤฑ รถzelliklerine gรถre tanฤฑmlamasฤฑnฤฑ saฤŸlayan รงeลŸitli teknikler vardฤฑr.

Web Sรผrรผcรผsรผ, รถฤŸeleri bulmak iรงin aลŸaฤŸฤฑdaki iki WebElement yรถntemini saฤŸlar.

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

FindElement() yรถntemini kullanarak bir web sayfasฤฑndaki tek bir รถฤŸeyi - Metin Alanฤฑ'nฤฑ WebElement nesnesi olarak elde etmek iรงin kod parรงacฤฑklarฤฑna bakalฤฑm. Sonraki eฤŸitimlerde birden fazla รถฤŸe bulmanฤฑn findElements() yรถntemini ele alacaฤŸฤฑz.

) 1 Adฤฑm Web Elements nesnelerini oluลŸturmak iรงin bu paketi iรงe aktarmamฤฑz gerekiyor

WebElement'e GiriลŸ FindElement,FindElements

) 2 Adฤฑm WebDriver sฤฑnฤฑfฤฑnda bulunan findElement() yรถntemini รงaฤŸฤฑrmamฤฑz ve bir WebElement nesnesi almamฤฑz gerekiyor.

Nasฤฑl yapฤฑldฤฑฤŸฤฑnฤฑ gรถrmek iรงin aลŸaฤŸฤฑya bakฤฑn.

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 olduฤŸu gibi gรถsteren giriลŸ metin kutularฤฑ.
  2. ลžifre Alanlarฤฑโ€“ Yazฤฑlan deฤŸerleri kabul eden ancak hassas deฤŸerlerin gรถrรผntรผlenmesini รถnlemek iรงin bunlarฤฑ bir dizi รถzel karakter (genellikle noktalar ve yฤฑldฤฑzlar) olarak maskeleyen metin kutularฤฑ.

    Selenium GiriลŸ metni

Konumlandฤฑrฤฑcฤฑlar

FindElement() yรถntemi, รถฤŸenin konum belirleyicisi olan bir parametreyi alฤฑr. By.id(), By.name(), By.xpath(), By.CSSSelector() vb. gibi farklฤฑ konum belirleyiciler sayfadaki รถฤŸeleri โ€œโ€œโ€œ id, name veya path vb. gibi รถzelliklerini kullanarak bulur.

ร–ฤŸelerin kimliฤŸini, xpath vb.'ni alma konusunda yardฤฑm almak iรงin Fire path gibi eklentileri kullanabilirsiniz.

ร–rnek siteyi kullanma https://demo.guru99.com/test/login.html AลŸaฤŸฤฑda, kimlik bulucuyu kullanarak โ€œE-posta adresiโ€ metin alanฤฑnฤฑ ve ad bulucuyu kullanarak โ€œลžifreโ€ alanฤฑnฤฑ bulmak iรงin kod verilmiลŸtir.

Konumlandฤฑrฤฑcฤฑlar

  1. E-posta metin alanฤฑ Id tarafฤฑndan bulunur
  2. ลžifre alanฤฑ ada gรถre bulunur

anahtarlarฤฑ gรถnder Selenium

sendkeys() iรงinde Selenium test yรผrรผtme sฤฑrasฤฑnda metin ve parola alanlarฤฑna dรผzenlenebilir iรงerik girmek iรงin kullanฤฑlan bir yรถntemdir. Bu alanlar ad, sฤฑnฤฑf, kimlik vb. gibi konum belirleyiciler kullanฤฑlarak tanฤฑmlanฤฑr. Web รถฤŸesinde kullanฤฑlabilen bir yรถntemdir. Tรผr yรถnteminin aksine, sendkeys() yรถntemi herhangi bir metin kutusundaki mevcut metni deฤŸiลŸtirmez.

Metin Nasฤฑl Girilir? Selenium

Metin Alanlarฤฑna ve ลžifre Alanlarฤฑna metin girmek iรงin sendKeys(), WebElement'te bulunan yรถntemdir. Selenium.

Aynฤฑ รถrneฤŸi kullanarak https://demo.guru99.com/test/login.html sitesinde Metin alanฤฑnฤฑ ve ลžifre alanlarฤฑnฤฑ ลŸu ลŸekilde bulacaฤŸฤฑz ve metni gireceฤŸiz: Selenium.

ฤฐรงindeki metin Selenium

  1. Kimlik bulucuyu kullanarak โ€œE-posta Adresiโ€ Metin alanฤฑnฤฑ bulun.
  2. Ad bulucuyu kullanarak โ€œลžifreโ€ alanฤฑnฤฑ bulun
  3. "E-posta Adresi"ne metni girin Selenium anahtar gรถnderme yรถntemi.
  4. sendKeys() yรถntemini kullanarak โ€œลžifreโ€ alanฤฑna bir ลŸifre girin.

GiriลŸteki DeฤŸerlerin Silinmesi Boxes

MKS aรงฤฑk() Bir giriลŸ kutusundaki metni silmek iรงin kullanฤฑlan yรถntem. Bu yรถntemin parametreye ihtiyacฤฑ yokturAลŸaฤŸฤฑdaki kod parรงacฤฑฤŸฤฑ E-posta veya Parola alanlarฤฑndaki metni temizleyecektir

GiriลŸteki DeฤŸerlerin Silinmesi Boxes

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

MKS Selenium tฤฑklama dรผฤŸmesine click() yรถntemi kullanฤฑlarak eriลŸilebilir.

Yukarฤฑdaki รถrnekte

  1. Oturum aรงmak iรงin dรผฤŸmeyi bulun
  2. Siteye giriลŸ yapmak iรงin sitenin giriลŸ sayfasฤฑndaki โ€œGiriลŸ Yapโ€ butonuna tฤฑklayฤฑn.

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

Selenium Gรถnder DรผฤŸmeleri

Gรถnder butonlarฤฑ formun tamamฤฑnฤฑ sunucuya gรถndermek iรงin kullanฤฑlฤฑr. Click () yรถntemini yukarฤฑda yaptฤฑฤŸฤฑmฤฑz gibi web elemanฤฑ รผzerinde normal bir buton gibi kullanabiliriz veya submit () yรถntemini formdaki herhangi bir web elemanฤฑ รผzerinde veya gรถnder butonunun kendisinde kullanabiliriz.

Selenium Gรถnder DรผฤŸmeleri

submit() kullanฤฑldฤฑฤŸฤฑnda WebDriver, รถฤŸenin hangi forma ait olduฤŸunu รถฤŸrenmek iรงin DOM'yi arayacak ve ardฤฑndan gรถnderme iลŸlevini tetikleyecektir.

Kodu tamamla

ฤฐลŸte tam รงalฤฑลŸma kodu

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 bulurken NoSuchElementException() ile karลŸฤฑlaลŸฤฑrsanฤฑz bu, Web sรผrรผcรผsรผnรผn sayfaya eriลŸtiฤŸi noktada รถฤŸenin sayfada bulunmadฤฑฤŸฤฑ anlamฤฑna gelir.

  1. Konum bulucunuzu Chrome'daki Firepath veya Inspect Element'i kullanarak tekrar kontrol edin.
  2. Kodda kullandฤฑฤŸฤฑnฤฑz deฤŸerin Firepath'teki รถฤŸenin deฤŸerinden farklฤฑ olup olmadฤฑฤŸฤฑnฤฑ ลŸimdi kontrol edin.
  3. Bazฤฑ รถzellikler birkaรง รถฤŸe iรงin dinamiktir. DeฤŸerin farklฤฑ olduฤŸunu ve dinamik olarak deฤŸiลŸtiฤŸini fark ederseniz, daha gรผvenilir ancak karmaลŸฤฑk yollar olan By.xpath() veya By.cssSelector() kullanmayฤฑ dรผลŸรผnรผn.
  4. Bazen bu bir bekleme sorunu da olabilir, รถrneฤŸin Web sรผrรผcรผsรผ kodunuzu sayfa tamamen yรผklenmeden รถnce รงalฤฑลŸtฤฑrdฤฑ vb.
  5. ร–rtรผlรผ veya aรงฤฑk beklemeleri kullanarak findElement() iลŸlevinden รถnce bir bekleme ekleyin.

ร–ZET

  • AลŸaฤŸฤฑdaki tablo, yukarฤฑda tartฤฑลŸฤฑlan her รถฤŸe tรผrรผne eriลŸmeye yรถnelik komutlarฤฑ รถzetlemektedir.
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ฤฑ geรงerli deฤŸerlerinden temizlemek iรงin kullanฤฑlฤฑr
BaฤŸlantฤฑlar Tฤฑklayฤฑn() BaฤŸlantฤฑya tฤฑklamak ve bir sonraki komuta geรงmeden รถnce sayfanฤฑn yรผklenmesinin tamamlanmasฤฑnฤฑ beklemek iรงin kullanฤฑlฤฑr.
DรผฤŸmesi Gรถnder Sunmak()
  • WebDriver, รงoklu bir SELECT รถฤŸesinde birden fazla seรงeneฤŸin seรงilmesine olanak tanฤฑr.
  • Formdaki herhangi bir รถฤŸe รผzerinde submit() yรถntemini kullanabilirsiniz. WebDriver, o รถฤŸenin ait olduฤŸu formun gรถnderme iลŸlevini otomatik olarak tetikleyecektir.

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