Merhaba arkadaşlar, Mobilhanem.com üzerinde Selenium ile Test Otomasyonu Geliştirme serimizin dördüncü dersinde Selenium WebDriver ile Unit Test‘i öğreneceğiz. Bir önceki dersimizde Web Uygulama Testleri Nelerdir adı altında web testlerine giriş yapmıştık ve web test çeşitlerini görmüştük. Bu dersimizde de web test çeşitleri için selenium webdriver kullanarak java da örnek test senaryoları yazacağız.
Bu çalışma için indirmeniz gerekenler :
- Netbeans IDE
- JDK
- Katalon IDE (Bir önceki derslerimizde plugin olarak tarayıcımıza nasıl ekleneceğini anlatılıyor.)
- Selenium
Bu indirmeleri tamamladıktan sonra artık Netbeans IDE’mizi açabiliriz. İlk olarak yeni bir proje oluşturalım. Bunun için File-> New Project diyelim. Karşımıza aşağıda bulunan ekran gelecektir.
Next diyerek projemize isim ve projenin kaydedilecek konumunu verelim. Finish dedikten sonra yeni projemiz JavaApplication class’ı ile açılmış olacaktır. Şimdi ise WebDriver’ı projemize nasıl ekleyeceğiz onu görelim.
Add Jar/ Folder dedikten sonra indirmiş olduğumuz jar’ları projemizin kütüphanesine ekleyelim. Jarları da ekledikten sonra unit test yazmak için hazırız.
Selenium WebDriver ile Unit Test’e Giriş
Java class’ımızda ilk olarak static olarak WebDriver’ı tanımlıyoruz . Burada WebDriver’ın kütüphanesi class’ımıza import edilmediği için uyarı verecektir. Import etmenin netbeansde ki kısa yolu Ctrl+Shift+ı ya da uyarıya tıklayarak add import seçeneğine tıklayarak import edebilirsiniz. Main metodumuzun içerisinde de indirmiş olduğumuz chromedriver.exe yi property olarak set etmemiz gerekiyor. Bu sayede class’ı run ettiğimizde chromedriver.exe çalışarak tarayıcıda yazmış olacağımız metodları göreceğiz. Buradaki örnekte tarayıcıyı açtırarak mobilhanem.com sitesine gitmesini sağlıyoruz.
package javaapplication3; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * * @author aybukeka */ public class JavaApplication3 { /** * @param args the command line arguments */ private static WebDriver webDriver = null; public static void main(String[] args) { // TODO code application logic here System.setProperty("webdriver.chrome.driver", "C:\\Users\\aybukeka\\Desktop\\chromedriver.exe"); webDriver = new ChromeDriver(); webDriver.get("https:\\www.mobilhanem.com"); } }
Eğer yukarıda kodları çalıştırdığınız da sürüm hatası alıyor iseniz kullandığınız versiyonlar birbirini desteklemiyordur. Bu tür hatada bu link’ten faydalanabilirsiniz. Bu ilk kısmı tamamladıktan sonra bir önceki derste anlatmış olduğum test türlerinden fonksiyonellik testine bir örnek yapacağım. Öncelikle kullanılabilirlik testinde aranması gereken özellikleri hatırlayalım ,
- Web sitelerinin kullanım kolaylıklarını,
- Sağlanan talimatlaınr netliğini,
- Verilen talimatların amacına ulaşmak için anlaşılır olup olmadıklarını,
- Özel bir istek yoksa, her sayfada ana menü sağlanıp sağlanmadığını,
- İçeriğin mantıklı ve anlaşılması kolay olup olmadığını,
- Yazım hatalarını,
- Resimlerin uygun boyutlarda düzgün yerleştirilip yerleştirilmediği,
- Koyu renklerin kullanılmasının kullanıcıları rahatsız edip etmediğini kontrol etmektedir.
Yaygın bir şekilde kabul gören standartları uygulamak faydalı olmaktadır. Bunlar web geliştirmede takip edilmesi gereken temel önemli standartlardan bazılarıdır.
Kullanıcılara yardımcı olmak için;
Site haritası geliştirirken, navigasyonun ağaç görünümüne sahip ve web sitelerindeki tüm bağlantılar ile birlikte olmasına, site haritasındaki tüm bağlantıların kontrol edilmesine önem verilmelidir.
“Sitede ara” seçeneği, kullanıcıların aradığı içerik sayfalarını kolayca ve hızlı bir şekilde bulmasına yardımcı olmaktadır. Kullanıcı tarafından bu kısma her şey girilebilmelidir.
Kullanılabilirlik Testi İçin Örnek Unit Test Yazımı
Mobilhanem sitesinde bulunan sitede ara seçeneğinin doğru çalışıp çalışmadığını test edelim. Tarayıcımız da katalon eklentisini açalım. Ardından New diyerek test case’imizi isimlendirelim. Sonrasında record’a basarak kayıt almaya başlayım. Burada yapılması gereken ilgili sitenin arama butonuna tıklayarak sonuç döndürüp döndürmediğini kontrol etmek. Şuan için sadece o butonun yazdığımız değerleri döndürüp döndürmediğini göreceğiz ilerleyen zamanlarda döndürdüğü sonuca göre log basarak unit testlerimizi daha da ilerleteceğiz.
Aşağıda sitede arama butonu için katalon ideden yapmış olduğum senaryo gösterilmektedir. Bu senaryoyu unit testimizde kullanabilmek için WebDriver+JUnit seçerek exportunu java class’ımıza alacağız.
Yukarıda ki resim çıktısı JUnit class’ı için bir örnektir. Biz bu yazımızda ilk başta unit testi daha iyi anlamamız için test paketi oluşturma ve Junit classındaki taglarını açıklamaya yer vermedik. Bu nedenden dolayı @Test annotation altındaki metodun içerisinde yer alan kodları class’ımızın main metoduna yapıştıracağız.
package javaapplication3; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * * @author aybukeka */ public class JavaApplication3 { /** * @param args the command line arguments */ private static WebDriver driver = null; public static void main(String[] args) { // TODO code application logic here System.setProperty("webdriver.chrome.driver", "C:\\Users\\aybukeka\\Desktop\\chromedriver.exe"); driver = new ChromeDriver(); driver.get("https://www.mobilhanem.com/"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Soru-Cevap'])[1]/following::i[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Soru-Cevap'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları:'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları:'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları:'])[1]/following::input[1]")).sendKeys("23423432"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları:'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: 23423432'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: 23423432'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: 23423432'])[1]/following::input[1]")).sendKeys("den??^'423oıu32u"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: 23423432'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)=concat('Arama Sonuçları: den??^', \"'\", '423oıu32u')])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)=concat('Arama Sonuçları: den??^', \"'\", '423oıu32u')])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)=concat('Arama Sonuçları: den??^', \"'\", '423oıu32u')])[1]/following::input[1]")).sendKeys("selenium"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)=concat('Arama Sonuçları: den??^', \"'\", '423oıu32u')])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: selenium'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: selenium'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: selenium'])[1]/following::input[1]")).sendKeys("sevde"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: selenium'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde'])[1]/following::input[1]")).sendKeys("aybüke kaleli"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: aybüke kaleli'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: aybüke kaleli'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: aybüke kaleli'])[1]/following::input[1]")).sendKeys("sevde aybüke kaleli"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: aybüke kaleli'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde aybüke kaleli'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde aybüke kaleli'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde aybüke kaleli'])[1]/following::input[1]")).sendKeys("Sevde Aybüke Kaleli"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: sevde aybüke kaleli'])[1]/following::button[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: Sevde Aybüke Kaleli'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: Sevde Aybüke Kaleli'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: Sevde Aybüke Kaleli'])[1]/following::input[1]")).sendKeys("yazarlar"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: Sevde Aybüke Kaleli'])[1]/following::button[1]")).click(); driver.findElement(By.linkText("Sonraki")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: yazarlar'])[1]/following::input[1]")).click(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: yazarlar'])[1]/following::input[1]")).clear(); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Arama Sonuçları: yazarlar'])[1]/following::input[1]")).sendKeys("author"); driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='Soru-Cevap'])[1]/following::button[1]")).click(); } }
Son olarak class’ımızı çalıştırdığımızda gördüğümüz sonuçları raporlamak ya da loglamak bize kalıyor. Mobilhanem.com da Selenium ile Test Otomasyonu Geliştirme serisinin bu dersinde Selenium WebDriver ile Unit Test dersimizin sonuna geldik. Bir sonraki dersimizde unit test örneklerini çoğaltarak devam edeceğiz. Eksik ya da yanlış gördüğünüz veya anlamadığınız yerler için çekinmeden ulaşabilirsiniz. Bir sonraki yazıda görüşmek üzere.
Ayrıca buradaki linkten Driver nedir ? , Driver nerelerde kullanılır ? Driver Yükleme ve Chrome Versiyon Bilgisi ile bilgileri edinebilirsiniz.
Intellij IDEA Ide kurulumu ilgili buradaki linkten yardım alabilirsiniz.
Tüm Selenium derslerimiz için tıklayınız.
2