IntelliJ IDE ve Selenium Webdriver Kullanımı

Mesut Beysülen
7 min readJan 17, 2020

Herkese yeni bir medium yazısından merhabalar :) Bu yazıda sizlere Test otomasyonu yazmak için kullanacağımız IDE ve herkesin bir şekilde duyduğu Selenium Webdriver kullanımının ilk aşamasını basit şekilde anlatacağım…

Nedir Intellij IDEA?

Intellij, Jetbrains firması tarafından geliştirilmiş, daha iyi ve daha hızlı kod yazmamıza yardımcı olan bir IDE’dir. Bir java entegrasyon ortamıdır. Daha önce eclipse vb. IDE kullanan biri olarak, kullanım açısından bence alanında en iyisi diyebilirim. Sizlerde aktif kullanıyorsanız benden farklı düşünmüyor olmalısınız. Beni kendine esir eden özellikleri başlıca;

  1. Debug Yeteneği,
  2. Basit Kısayol dokunuşları ile hızlı kodlama,
  3. Çok basit try-catch ve if-else blok oluşturma olayı(çok eğlenceli),
  4. Çok farklı dilleri desteklemesi diyebilirim. Ama daha birçok sebep var.

Her neyse devam edelim :) Sıkı durun! Intellij IDEA eğer öğrenciyseniz, ücretli olan sürümlerini ücretsiz kullanabileceğiniz bir IDE. Evet,crack derdi yok:) Üniversite e-mail adresiniz ile kolayca kayıt olarak, professional ve ultimate sürümlerini indirebilirsiniz ve tam sürüm olarak kullanabilirsiniz. Bunu nasıl yapacağınızı youtube kanalımda anlattım. Linke tıklayarak ulaşabilirsiniz.(Pycharm üzerinde anlattım ama olsun Intellij IDEA aynı şekilde.)

Eğer öğrenci değilseniz de, üzülmeye gerek yok zaten community versiyonu da yeterli bence.

Intellij idea indirmek için sitelerini ziyaret ettiğinizde bu ekran ile karşılaşırsınız.

Selenium Webdriver Nedir?

Öncelikle Selenium Webdriver hakkında biraz konuşalım. Webdriver, testlerimizi sadece Firefox, Chrome tarayıcılarında değilde, farklı birçok tarayıcı da yürütmemizi sağlayan bir web otomasyon aracıdır. Webdriver test komutları oluştururken bir programlama dili kullanmamızı da sağlar.

Webdriver Örnek Test Tarayıcıları

Aynı zamanda Webdriver birçok programlama dili ile (C#, Java, Python) testlerimizi yazmamızı sağlamaktadır.

Selenium IDE ile browser üzerinde test otomasyonu yazmak yerine artık bir projeyi yukarıdaki programlama dillerinden biri ile yazmak Selenium Webdriver ile mümkün olmaktadır. Biz genelde bu yazı serisinde programlama dilleri olarak java ve python’ ı kullanacağız. Ama sizler hangi programlama dilinde daha iyiyseniz onunla çalışabilirsiniz. :)

Örneğin, bir e-ticaret sitesinde giriş sayfasında username ve password olarak inputlar, giriş ve kayıt olarak da butonlar bulunmaktadır. Bu username ve password alanlarının doldurulması, sonrasında da giriş butonuna tıklanması ile sonuçlanan bir testin, başarılı-başarısız durumlarını test etmemizi otomatik hale getiren bir yapı sağlamaktadır.

Eğer Intellij idea kurduysanız, ve Selenium Webdriver’ ın az çok ne olduğu da kafanızda şekillendi ise, intellij idea da Selenium Webdriver çalıştırarak artık her şeyi netleştirelim…

İlk olarak, Intellij idea’yı açarak aşağıdaki ekranda olduğu gibi “Create New Project” seçiyoruz.

Yeni proje oluşturma

Bir sonraki gelen ekran üzerinde Maven ya da Gradle projesini seçerek ilerleyebiliriz. Temel bir Maven projesi oluşturmak için aşağıdaki seçenekler ile ilerlerseniz ilk aşamada daha sağlıklı olacaktır. Peki nedir Maven ve Gradle?

Maven olarak seçilen örnek proje

Maven, özünde proje bağımlılık yönetim aracıdır. İyi de proje bağımlılık aracı ne işe yarar? bunu cevapla bakalım der gibisiniz :)

Proje bağımlılık araçları, projelerimizi geliştirirken proje içerisinde standart bir yapı kurmamızı, basit ve dökümante edilmiş bir geliştirme yapmamızı, kütüphanelere ve tek bir IDE bağımlılığını ortadan kaldırmamızı sağlayan araçlardır. Eğer uygulama geliştirme aşamasında maven ve gradle gibi inşa araçları kullanmıyorsanız, taş devrinde yaşıyor, emeklilik bekliyor olabilirsiniz :)

Maven demişken POM’dan bahsetmemek olmazdı. POM, proje nesnesi modeli(Project Object Model),kelimelerin baş harfleri baz alınarak adlandırılan, maven projesi yaratırken gelen bir XML dosyasıdır. Maven’ ın temel iş birimi diyebiliriz. POM içinde proje için yapılandırmalar tanımlanır, kullanılacak kütüphanelerin projeye eklenmesi sağlanmaktadır. Bu XML üzerinde yapılan her değişiklik sonucunda projede gerekli yapılandırmalar ilk önce çalışır yani örneğin kütüphaneler eklenir ve sonrasında proje içersin de bu yapılandırmalar(kütüphaneler,modüller vs.) kullanılabilir hale gelir.

Konuyu çok dağıtmadan amaçlarını da aşağıda sıralayarak devam edelim… Çok işimiz var daha…

  1. Projeler bir standarda oturtulur.
  2. Projenin çoğu bilgisine kolayca ulaşmak
  3. Bağımlılıkların Kontrolü
  4. Kolay ve basit güncelleme sağlamak
  5. Kolay Dökümante edilmesi
  6. IDE Bağımlılığını ortadan kaldırmak

Bu kadar bilgiden sonra şimdi projeyi yaratmaya devam edelim. Next dedikten sonra gelen ekranda GroupId ve ArtifactId bilgilerini projemizin amacına göre dolduruyoruz.

Örnek GroupId-ArtifactId

Tekrar Next dedikten sonra aşağıdaki gibi bir ekran geliyor ve Projeye ait bilgileri gelmektedir. Hiç dokunmadan Next diyebilirsiniz. Yeni gelen ekranda proje adını ve projenin path’ ini tanımladıktan sonra artık Finish ile bir ohhh! çekebilirsiniz.

Default POM.xml dosyası

Projemiz açıldı ve default olarak gelen pox.xml dosyasında daha önce bahsettiğim gibi projeye ait bilgilerin tanımlarını, kütüphane ve modül tanımlarını görüyorsunuz. Peki “Projeyi oluşturduk şimdi ne yapacağız arkadaş?” dediğinizi duyar gibiyim. “Yukarı da Selenium Webdriver’ ı boşuna anlatmadık kardeşim” derim bende.

Şimdi Selenium için gerekli kütüphaneyi ekleyelim. Peki bunu nasıl ekleyip, kurucaz?

https://mvnrepository.com diye bir adresten bahsedelim. Bu adres bizim projemize eklemek istediğimiz kütüphanelere (jar, maven,gradle vb.) ulaşabileceğimiz muhteşem bir yer! Bu adresi unutmayın, unutturmayın :) ÇOK lazım olacak.

Selenium Java diye arattığımızda yukarıda işaretli olan ilk seçeneğe tıklıyoruz.

Gördüğünüz gibi uygun olan sürüme tıkladığımızda ise, gelen ekranda maven, gradle gibi bağımlılık(dependecy) kodlarına erişmiş oluruz. Artık sıra bu kodu alıp, projemizde bulunan pom.xml içerisindeki <dependencies></dependencies> blok içine eklemeye geldi. Bu kütüphanenin projemize import’u için bu işlemi yapmalısınız.

Örnek dependency eklenmiş hali

Kodu ekledikten sonra değişikliğin import edilmesi için ekranda da gördüğünüz import changes tıklanır. Tıkladıktan sonra kütüphanelerin “External libraries” içerisine geldiğini göreceksiniz. Tavsiyem “Enable Auto-import” tıklamanız ve her değişiklikte otomatik şekilde import işlemini yapması.

Kütüphane Eklenmiş hali

Bu aşamaya kadar geldiyseniz artık selenium’ u İntellij idea da kullanabilir, kodlayabilir hale geldiniz demektir.

Başlangıç için iyi bir başarı sağladınız. Kendinizi takdir edebilirsiniz.:) Peki artık basit bir login işlemini otomatik hale getirelim mi? Evet der gibisiniz. Bence de buraya kadar geldik, bir kod yazmadan gitmeyelim yani.

Testimizi şimdilik default olarak gelen AppTest.java dosyası içerisinde yazmamız yeterli olacaktır. Sonraki anlatımlarda OOP(Object Oriented Programming) mantığı ile kodlamayı da anlatacağım.

Kodlamaya başlamadan önce, testlerimizi çalıştıracağımız browser’ a ait exe dosyasını indirmemiz gerekiyor. Aşağıdaki adresten driver dosyasını indirebilirsiniz. Ben chrome kullanacağım için bu linki paylaştım.

http://chromedriver.chromium.org/downloads

Firefox ve Chrome Driver

Uygun olan versiyonu indirdikten sonra, Proje üzerinde sağ click yaparak, New →Directory ile yeni bir klasör oluşturup, adına drivers diyoruz. Bu klasör artık bizim farklı browser’ ların driver’ larını tutacağımız klasörümüz olarak kullanılacaktır.

Ben hem firefox hem de chrome üzerinde testlerimizi çalıştırabileceğimiz için 2 driver’ ı da ekledim.

Şimdi de www.enuygun.com adresine giriş işlemimizi otomatik hale getirdiğimiz testimizi yazalım. test klasörü içinde bulunan java dosyasına aşağıdaki case’ imizi yazıyoruz.

System.setProperty("webdriver.chrome.driver","C:\\Users\\MESUT\\IdeaProjects\\TestAutomationFirstProject\\drivers\\chromedriver.exe");//System.setProperty("webdriver.gecko.driver","C:\\Users\\MESUT\\IdeaProjects\\TestAutomationFirstProject\\drivers\\geckodriver.exe");//WebDriver driver = new FirefoxDriver();
WebDriver driver = new ChromeDriver();

//BaseUrl değişkenine url bilgisi atanır.
String baseUrl = "https://www.enuygun.com";
//Web sitesini browser da açar
driver.get(baseUrl);

Chrome ve firefox da çalıştıracağımız testlerimiz için, ilk önce driver yollarını sisteme belirtmek gerekiyor. Onun için System.setProperty() metodunu yazdık. Kullanımı hakkında detaylı bilgi için tıklayınız.

Webdriver ara birimi yöntemlerini kullanmak için browser bazında bir sınıf oluşturmak gerekiyor bizde, Webdriver driver = new Chromedriver(); şeklinde uyguluyoruz.

Sonrasında url bilgisini bir String değişkene tanımlayarak bunu driver nesnesinin get metodu ile çağırıyoruz. Bu adıma kadar ki kısmı çalıştırdığınız da chrome üzerinde www.enuygun.com adresine gittiğini göreceksiniz. Artık Web Elementleri yakalayarak butonlara tıklama ve textboxlara veri gönderme işlemlerini yapalım.

//Açık Bekleme Tipi olan WebdriverWait Tanımlanır.
//Bu, bir TimeoutException özel durumu oluşturmadan önce 15 saniye kadar bekler veya öğenin bulduğu takdirde 0 - 15 saniye içinde döndürür
//WebDriverWait wait = new WebDriverWait(driver,TimeOut);
WebDriverWait wait = new WebDriverWait(driver,10);

//browser'ı maksimum boyuta getirir
driver.manage().window().maximize();
//Giriş yap navbarda görünene kadar bekler ve tıklar
WebElement navBarLogin = wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("//*[@id=\"Header\"]/nav[1]/div/div[8]/a[1]"))));
navBarLogin.click();

//Username textbox'ı için veri gönderir
WebElement username = driver.findElement(By.xpath("/html/body/div[20]/div[2]/div/div/div/form/div[1]/div/div/input"));
username.sendKeys("test@gmail.com");

//Password textbox'ı için veri gönderir
WebElement password = driver.findElement(By.xpath("/html/body/div[20]/div[2]/div/div/div/form/div[2]/div/div/input"));
password.sendKeys("123456");

//Giriş Yap Butonuna Tıklar
WebElement loginClick = wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.xpath("/html/body/div[20]/div[2]/div/div/div/form/div[3]/button/span[1]"))));
loginClick.click();

Yukarıda buton ve textbox üzerinde işlemler ile giriş testini bitirmiş olduk. Selenium kütüphanesi ile gelen Webelement metodunu kullanarak web adresinin ögelerine ulaşabiliriz. Peki, Web elemanlarının Tag bilgilerine nasıl ulaşabiliriz der gibisiniz? Bunu yapabilmek için chrome da web adresi üzerinde F12 tuşuna basarak gelen kaynak kodlarda istediğiniz web elamanın xpath, id, class vb. bilgilerine ulaşabilirsiniz. Aşağıdaki görsel ile daha iyi anlayacaksınız.

F12 ile gelen ekranda istenilen textbox üzerine mouse ile gitiğinizde tag bilgilerine ulaşabilirsiniz…

Html kodları üzerinde mouse sağ click ile xpath, classname, id vb. bilgilere ulaşabilirsiniz.

Html kodu üzerinde sağ click yaparak xpath, class, id bilgilerine ulaşabilirsiniz…

Kodu çalıştırmak için Intellij Idea da kod içinde sağ click →Run tıklayarak test çalıştırılır.

Artık bu adıma da geldiyseniz, oturun ve giriş işleminin otomatik olarak nasıl çalıştığını izleyin. Tabi, bu yazı serisine devam edicez. Başlangıç noktasında bu yazı test otomasyon için sizlere bir fikir, bir adım olmuştur diye düşünüyorum. Sonraki yazılarımızda daha kapsamlı testlerin nasıl yapıldığını, kontrollerin, hata fırlatmaların yakalanması, e-ticaret siteleri üzerinde birden fazla test case koşulması gibi bir çok adımı göstereceğim. Youtube kanalında da eğitim olarak yayınlanacaktır. Takipte kalın, bir sonraki yazıda görüşmek üzere…

Kaynaklar

  1. https://www.guru99.com/intellij-selenium-webdriver.html
  2. https://www.softwaretestinghelp.com/automation-testing-tutorial-1/
  3. https://www.tutorialspoint.com/software_testing_dictionary/test_automation.htm

--

--

Mesut Beysülen

Senior QA-Test Automation Engineer @MigrosOne, Ex @hepsiburada | Instructor on Youtube @mesutbeysulen