seleniumjava

Java Netbeans Selenium Kurulumu ve Detaylı Kullanımı

Herkese Merhabalar , bugün sitemizde Selenium frameworkünü Java’da Netbeans üzerinde kurulumunu ve kullanımı anlatacağım.Belki Selenium hakkında bilgi sahibisinizdir ancak ben yine de biraz bahsedeyim 🙂

Selenium Nedir ?

Selenium bir websitesi üzerinde kullanıcı deneyimi test etmek için kullanılan bir frameworktür.Websitesinde gerçek bir kullanıcının yaptığı aktivitleri otomatize edebilirsiniz.Bunlar input alanlarına veri girmek , tıklama yapmak , web sistesini scroll etmek , bir web elemanının cssine müdahale etmek olabilir.Selenium ile botlar yazıp , sizin için durmak bilmeden çalışan bir robota sahip olabilirsiniz.

NetBeans Üzerinde Selenium

Selenium frameworkünü C# , Python , Java gibi bir çok programla dilinde ve bir çok farklı platform üzerinde kullanabilirsiniz.Java programlama dilinde Netbeans üzerinde kullanmak için neler yapmamız gerektiğine hızlıca göz atalım.

Seleniumu hatasız bir şekilde çalıştırabilmek için Google Chrome sürümü ile kullandığımız chromedriver uyumlu olmalı.Benim kullandığım ve hata almadığım versiyonları kullanırsanız sorun yaşama ihtimaliniz oldukça düşük olacaktır.

  • Öncelikle bilgisayarınızda Google Chrome version 74 sürümü yüklü olmalı.Bunun için Denetim Masası > Program Kaldır bölümünden Google Chrome uygulamasını kaldırın.
  • Kaldırma işlemi bittikten sonra bilgisayarınız özelliğine göre şu adreslerden Google Chrome v74(32bit) veya Google Chrome v74(64bit) versiyonunu indirin ve kurun.
  • Netbeans tarafına geçmeden önce Selenium jar dosyalarını şu adresten indirip seleniumjars klasörünü bir yere çıkaralım.
  • Daha sonrasında yeni bir java projesi oluşturalım :
  • Daha sonra oluşturduğumuz projenin altında bulunan libraries e sağ tıklayarak Add Jar/Folder seçeneğine tıklayalım.
  • Açılan pencere daha öncesinde rardan çıkardığımız seleniumjars klasörüne girelim ve shift tuşu ile tum jarları seçip open diyelim.
  • Kurulum aşamasında yapmamız gereken tek bir şey kaldı.O da chromedriver.exe ‘ yi proje dizinimize eklemek.Daha önce indirdiğimiz Google Chrome kurulum dosyasıydı.Şimdi indireceğimiz ise üzerinde işlemler yapacağımız özelleştirilmiş web tarayıcısı.Bunun kurulumuna gerek yok sadece indirip proje dizinimize kopyalamak yeterli olacak.Chromedriver.exe yi şu adresten indirebilirsiniz.
  • İndirdikten sonra proje ana dizinine kopyalayın.

WebDriver Nesnesini Tanımlama

Herhangi bir ayar içermeden web driver nesnemizi tanımlayıp http://google.com.tr adresini şu şekilde açabiliriz.

public class SeleniumDeneme {

    private static WebDriver driver;
    
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://google.com.tr");
    }
  
}

Bu basit kullanımı Options fonksiyonu ile ayarlar ekleyerek daha kullanışlı bir hale getirebiliriz.Örneğin browserın önyüzde görünmeden çalışmasını veya browserın pencere boyutunu belirleyebiliriz.Bunun gibi şeyleri nasıl yapabileceğimize bakalım.

Options ile Webdriver’ı Özelleştirme

Öncelikle options nesnemizi şu şekilde tanımlıyoruz :.

ChromeOptions options = new ChromeOptions();

Şimdi bazı örnek ayarlara bakalım.

  • Browserın arka planda çalışmasını istiyorsak :
options.addArguments("headless");
  • Browser pencere boyutunu belirlemek için :
options.addArguments("window-size=1200x600");
  • Browserda resimlerin yüklememesini sağlamak için :
options.addArguments("--blink-settings=imagesEnabled=false");

options isimli nesnemize istediğimiz özellikleri ekledikten sonra CromeDriver() yapıcı fonksiyonuna şu şekilde göndererek browser nesnesmizi oluşturuyoruz.

driver = new ChromeDriver(options);

Browser’a Bekleme Süresi Eklemek

Websiteleri üzerinde işlemler yaparken bir çok farklı sıkıntı ile karşılaşabiliriz.Bunlardan bir tanesi de websitesinin yüklenme hızının yavaş olması veya kendi internet bağlantımızın hızının yavaş olması durumudur.

Bu durumda websitesindeki bir eleman üzerinde işlem yapmak istediğimiz zaman eleman henüz tarayıcımıza yüklenmemiş olabilir.Bu da NoSuchElementException hatası almamıza sebep olur.

Bu sıkıntıyı aşmak için websitesine tolerans tanıyacağı bir bekleme süresi tanımlayabilir.20 saniyeye tolerans tanımak için ;

driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

Selenium ile WebElemanı Seçme (Selectors)

Selenium ile websitesi üzerindeki buton , textfiled veya diğer elemanlar üzerinde işlem yapmak istediğimizde bu elemenı seçmemiz gerekiyor.Bunun için farklı tipte seçiciler var.Olası senaryaya göre en iyisini bulup kullanmamız gerekiyor.

Seçmek için şu seçicileri kullanabiliriz :

  • ID
  • Name
  • Class Name
  • Tag Name
  • Link Text
  • Partial Link Text
  • XPATH

Örnek kullanımlar :

WebElement kullaniciAdiAlani=driver.findElement(By.name("username"));

WebElement girisButonu = driver.findElement(By.xpath("//*[@id='react-root']/section/main/div/article/div/div[1]/div/form/div[4]/button"));

Selenium ile Çoklu Eleman Seçim

Bazen websitesinde aynı özelliğe sahip birden fazla elemanı seçmek isteyebiliriz.Bu işlemi findElements ile yapabiliriz.Dönen değeride listeye atamamız gerekiyor.Kullanımını şu örnekteki gibi gerçekleştirebiliriz.

List<WebElement> elemanlar = driver.findElements(By.tagName("button"));

2.butona erişip tıklamak için ;

elemanlar.get(1).click();

click() ve sendKeys() Kullanımı

Selenium ile işlemler yaparken en sık kullanacağımız 2 fonkisiyon click ve sendKeys fonksiyonlarıdır.

Webelemanına tıklamak için click() fonksiyonunu kullanıyoruz.Herhangi bir değişkene atamadan şu şekilde kullanabiliriz :

driver.findElement(By.xpath("/html/body/button[2]")).click();

Herhangi bir input veya text alanına değer girmek istiyorsak sendKeys() fonksiyonunu kullanırız.

driver.findElement(By.name("username")).sendKeys("mertinal");

Bulunan Sayfanın Özeliklerini Çekmek

Bulunan sayfanın adresini getCurrentUrl() ile çekebiliriz.Sayfanın başlık özelliğini çekmek istiyorsak getTitle() , sayfanın tüm html kaynak kodunu çekmek istersek getPageSource() fonksiyonunu kullanabiliriz.

String sayfaKaynagi = driver.getPageSource();
String sayfaBasligi = driver.getTitle();
String url = driver.getCurrentUrl();

Selenium ile Sayfada Javascript Çalıştırmak

Selenium ile işlemler yaparkem bazen javascript kodları kullanma ihtiyacı duyarız.Bunu yapmak için JavascriptExecutor kullanmamız gerekiyor.

JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("Script kodumuz");

Örneğin websitede bulunan scrollbarı sayfanın en altına indirmek için :

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");

Yeni Tablar Açmak ve Tablar Arasında Gezinmek

Yeni bir tab açmak istediğimizde en sağlıklı metot yine javascript kodu ile yeni sekme oluşturmak.Yeni sekme oluşturduktan sonra bu sekmeye geçiş yaparak istediğimiz linke gidebiliriz.

((JavascriptExecutor)driver).executeScript("window.open()");
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("http://kodlar.net");

Selenium getAttribute ve getText Metotları

Örnek bir senaryo üzerinde web elemanının özelliklerine ve text verisine ulaşalım.Şöyle bir eleman üzerinde işle yapacak olursak ;

<textarea data='a' data2='b' data3='c' style="background-color : green">Selamlar</textarea >
driver.findElement(By.tagName("textarea")).getAttribute("data"); // a
driver.findElement(By.tagName("textarea")).getAttribute("data2"); // b
driver.findElement(By.tagName("textarea")).getAttribute("data3"); // c
driver.findElement(By.tagName("textarea")).getText(); // Selamlar

Css Özelliğine Erişmek

Elemanın css özelliğine erişebilir ve buna göre işlem yapabiliriz ;

String arkaplan = eleman.getCssValue("background-color"); //green

Bir yazımızın sonuna daha geldik.Spesifik bir çok özelik daha var , bunlar araştırılarak bulunabilir.Umarım faydalı bir yazı olmuştur.Bir sorunla karşılaşırsanız yorum yapmaktan çekinmeyin 🙂 .Daha detaylı bilgi edinemek istiyorsanız şu siteyi ziyaret edebilirsiniz.

Abstract Class Nedir ? Soyut Sınıf Kavramı

Abstract class Türkçe anlamı ile soyut sınıf Java’da bazen üst sınıfın ve üst sınıfta bulunan metotların direkt olarak kullanılmasını istemeyiz.Yani üst sınıfı extend eden alt sınıfların üst sınıfta bulanan özelliği kendisine göre şekillendirmesi gerekebilir.Bu gibi durumlarda soyut sınıflar devreye girer.Soyut sınıflar tanımlanırken sınıf tanımlamasının önüne abstract anahtar kelimesi eklenir.Örnek olarak kodla açıklayacak olursak ;

Devamını Oku