Ana içeriğe atla

Kayıtlar

Nisan, 2019 tarihine ait yayınlar gösteriliyor

Otomasyon Testlerini JUnit ile Önceliklendirme

Kullandığınız IDE'de ilk olarak çalışmasını istediğiniz kodun @Test annotation'ının üstüne  @Category({Critical.class}) yazın. İkinci olarak çalışmasını istediğinizin üzerine; @Category({Major.class}) yazın. Bu categoriler için Critical ve Major interfacelerini oluşturun. Critical interface inin içine import org.junit.experimental.categories.Categories; import org.junit.runner.RunWith; @RunWith(Categories.class) @Categories.IncludeCategory({Critical.class}) public interface Critical { } Major categorisinin içine import org.junit.experimental.categories.Categories; import org.junit.runner.RunWith; @RunWith(Categories.class) @Categories.IncludeCategory({Major.class}) public interface Major { } yazın. pom.xml'e <profiles>             <profile>                 <id> All </id>                 <build>                     <plugins>                         <plugin>                            

Git Yeni Kod Ekleme

Git Bash' i açın. 'cd koddizini' ile kodunuzun olduğu klasöre gelin. 'git status' yazarak yeni yazdığınız kodun eklenmemiş olduğunu görürsünüz. 'git add .' yazarak bütün dosyaları ekleyin. 'git commit' ile commit edin. İsterseniz  'git commit -m "mesajiniz" ile mesaj da ekleyebilirsiniz. 'git push' ile uzaktan sizin ve başkaların erişebilmesini sağlayın. 'git log' ile bütün yaptıklarınızı adım adım görebilirsiniz. Bu adımları Intellij IDEA'dan da yapabilirsiniz. Sol altta Version Control kısmında log kısmından eklenen, commit edilen dosyaları görebilirsiniz. Sağ üstten de commit yapabilirsiniz. Kodunuz localdeyse ve uzağa yeni repo açıp kodu göndermek istiyorsanız: git init git remote add "yenirepoadi" https://github.com/.../yenirepodadi.git git push -u testgurulogin master Uzağa açtığınız repoya localdeki kodunuzu eklemek istiyorsanız git push -u repoadi master Uzağa açtığınız

Selenium Gmail Giriş, Mail Atma, Atılan Maili Kontrol Etme ve Çıkış

import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class gmailSendAndReceiveMailTest {     private WebDriver driver;     @Before     public void setUp() {         System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");         driver = new FirefoxDriver();     }     @Test     public void gmailSendAndReceiveEmailShouldBeSuccessful() throws Exception{         driver.get("http://gmail.com");         WebElement usernameTextbox = driver.findElement(By.id("identifierId"));         usernameTextbox.clear();         usernameTextbox.sendKeys("mail@gmail.c

Git Kod Ekleme ve BitBucket ile Bağlantısını Kurma

Git Bash'i açın. Bash ekranına 'cd klasördizini' yazarak kodunuzun klasörüne gelin. Eğer git i ilk defa kullanıyorsanız 'git init' yazın ve reponuzu başlatın. Yeni repo oluşturduysanız onun uzak reposunu oluşturmak için de bunu yapmalısınız. 'git status' yazarak reponuzdaki dosyaları görebilirsiniz. Git size takip edilmeyen dosyalarınız olduğunu söyleyebilir. Bu dosyaların takip edilmesini, versiyon değişikliği vs. için istiyorsanız 'git add' ile ekleyebilirsiniz.  Eğer izlenmesini istemediğiniz dosyalar vs varsa yeni bir dosya oluşturup içine bu dosya türevlerini yazabilirsiniz. Örneğin 'vim .oluşturacağınızdosyaadı' yazıp içine örnek olarak aşağıdakileri yazabilirsiniz.  *.idea* *.iml *target* Sadece pom.xml ve source kodunuz git tarafından versiyon takibine alınmalıdır. Diğerleri eğer gerekmiyorsa kaldırılmalıdır. 'git status' ile nelerin takip edileceğini görebilirsiniz. 'git add .' yazarak ilk commit ini

Gmail Giriş ve Çıkış Test Otomasyon Kodu

Intellij IDEA'da java ile yazılmıştır. Gmail'e giriş ve hemen çıkış işlemini yapmaktadır. Giriş işleminin yapıldığını 'Gelen Kutusu' elementini bularak, çıkış işleminin yapıldığını ise şifre alanını bularak kontrol etmektedir. import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class GmailSigninTest {     private WebDriver driver;     @Before     public void setUp(){         System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");         driver = new FirefoxDriver();     }     @Test     public void gmailLoginShouldBeSuccessful(){         driver.get("ht

Selenium'da Alınabilecek Hatalar

org.openqa.selenium.ElementNotInteractableException: Bu hata, aradığınız elementin sayfaya yüklenemediği zamanlarda oluşur. Hatanın devamında hangi element için hatanın verildiği belirtilir. Sizin kodunuzda yazdığınız locator bilgisi ile. Bunu çözmek için; Thread.sleep(zaman) ya da örnek olarak aşağıdaki gibi wait fonksiyonunu kullanabilirsiniz.  WebDriverWait wait = new WebDriverWait(driver,zaman);   wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.partialLinkText("Gelen Kutusu"))); Thread.sleep tense wait metodu sizin test koşum zamanınızı gerektiği kadar uzatacaktır, diğeri ise element sizin verdiğiniz süreden daha kısa zamanda bulunsa dahi bekleyecektir bu da test koşum sürenizi gereksiz uzatacaktır.

Test Otomasyonu için Intellij IDEA Maven Projesi Oluşturma

Intellij IDEA - File - Project - New tıklayın.  Soldan Maven ı seçin.  İleriye basın.  Group ID, sizin projenizi tanımlayan bir isim olmalı. Bu alanı doldurun. ArtifactId, projenizin adı. Bu alanı doldurun. Project name, artifactID alanına yazdığınız değer gelir. Finish e basın. İlk olarak karşınıza projenizin pom.xml dosyası gelecek. Buraya ilgili bağımlılıkları ekleyin. Selenium için;  https://www.seleniumhq.org/download/maven.jsp  adresindeki güncel bağımlılığı <dependencies> </dependencies> satırlarının arasına ekleyin. Daha sonra sağ altta çıkan uyarıda Import linkine basın. Böylelikle maven belirttiğiniz versiyonun dosyalarını alacaktır. Test framework ü olarak kullandığımız JUnit bağımlılığı için  https://mvnrepository.com/artifact/junit/junit  adresindeki güncel versiyonundan aldığınız satırları yine aynı  <dependencies> </dependencies> satırlarının arasına ekleyin. Daha sonra sağ altta çıkan uyarıda Import linkine basın. Böylelikle maven

Windows'ta Test Otomasyon Ortamında Kullanılabilecek Araçlar

Burada programlama dili olarak Java kullanılacak, IDE olarak Intellij IDEA, framework olarak JUnit, versiyon kontrol aracı olarak Git, proje yönetim aracı olarak Maven kurulacaktır. Selenium ve FireFox test koşumu esnasında kullanılacaktır. Java İlk olarak  https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html  adresinden windows x64 için exe dosyasını indiriyoruz. Daha sonra açılan kurulum ekranlarından 'ileri' tuşuna basarak kurulumu tamamlamalısınız. *Sizin işletim sisteminiz 32 bitse windows x86 indirmeniz gerekiyor. Javanın doğru kurulduğundan emin olmak için Başlat menüsüne 'cmd' yazın. Açılan terminale 'java -version' yazın, gelen java versiyonun indirdiğiniz ile aynı olması gerekmektedir. Başlattan bilgisayarıma gelin, sağ tıklayın, gelişmiş sistem özelliklerini seçin. Advanced-gelişmiş tabından Environment Variables-sistem değişkenlerine tıklayın. User variables kısmındaki yeni butonuna tıklayın. Açılan p

Farklı Tarayıcılarda Test

Burada 3 tarayıcıda aynı testi koşturuyoruz. open methodunu tanımlıyoruz. Tarayıcıların driver larının yerlerini gösteriyoruz. Sonra test kısmında sırayla çağırıyoruz. IE'de hata alıyorsanız selenium ile sürümlerinin birbirleriyle uyumlu olduklarından emin olun. public class CrossBrowserTest {    WebDriver driver;     public void open()   {   driver.get("https://www.google.com/");   String Title = driver.getTitle();   System.out.println("Title of the webpage = " +Title);         assertEquals(Title,"Google");     }     @Before   public void setUp() throws Exception {   System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");     System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver_win32\\chromedriver.exe");     System.setProperty("webdriver.ie.driver","C:\\Selenium\\IEDriverServer

HTMLUnit Başlangıç

HtmlUnit java programları için kullanılan headless (govdesiz, sanal) bir web browser. Yani ortada herhangi bir arayüz olmadan tüm tarayıcı fonksiyonlarını java kodları ile yapmakta. HtmlUnit ile sayfaların html bilgisini alabilirsiniz ya da test için kullanabilirsiniz. Herhangi bir web sayfasındaki; sayfa çağırma, form doldurma, linke tıklama vs. gibi işlemleri yapabilirsiniz. JavaScript desteği bulunmakta, AJAX kütüphaneleriyle çalışmakta ve Chrome, Firefox, Internet Explorer gibi tarayıcıları simüle etmektedir.  HtmlUnit, birim test framework ü değil, JUnit, TestNG gibi frameworklerle beraber çalışmaktadır. Eğer maven kullanıyorsanız; bağımlılıkları pom.xml dosyanıza ekleyerek, projenizi derleyerek HtmlUnit in bağımlı olduğu jar kütüphanelerini projenize eklemiş olursunuz. Eğer kullanmıyorsanız , HtmlUnit in jar kütüphanelerini indirip, kullandığınız IDE'deki ilgili pakete Build Path-Configure Build Path- Libraries kısmından Add External Libraries e tıklayar

Web Sayfasındaki Linkleri Kontrol Etme

Burada instagram sayfasındaki linklerin çalışıp çalışmadığına bakıyoruz.  Örnek Kod: //Burada geçmişi hatırlama seçeneği kapalı olan tarayıcı ile test yapıldı. @Test public void test() throws InterruptedException { driver.get(BaseUrl); String anasayfa = driver.getWindowHandle(); List<WebElement> linkElements = driver.findElements(By.tagName("a")); String[] linkTexts = new String[linkElements.size()]; System.out.println(linkElements.size()); //kaç tane link var onu yazdırıyoruz int i = 0; Thread.sleep(3000); //her linkin metnini alıyoruz for(WebElement e : linkElements) { linkTexts[i] = e.getText(); i++; } //Her linke gidip başlığı çalışıyor mu bakıyoruz Thread.sleep(2000); for (String t : linkTexts) { Set<String>TabListesi = driver.getWindowHandles(); for (String child:TabListesi) { if(child.equalsIgnoreCase(anasayfa)) //tab anasayfaya esitse { driver.s

Web Sayfasının İlgili Kısmındaki Linkleri Alma, Linklere Tıklama

Burada instagramda belirtilen kısımdaki yani footerdaki linklere tıklanıyor. İki test koşumu arasında sayfadaki linkler değişir ihtimaliyle koddaki box elementine tekrar sayfanın ilgili kısmındaki linkler atanıyor. Örnek Kod: public void test() throws InterruptedException { driver.get(BaseUrl); String anasayfa = driver.getWindowHandle(); WebElement box = driver.findElement(By.xpath(" /html/body/span/section/footer ")); List<WebElement> links = box.findElements(By.tagName("a")); System.out.println(links.size()); Thread.sleep(2000); //her linkin metnini alıyoruz for(int i =0; i<links.size(); i++) { System.out.println(links.get(i).getText()); Set<String>TabListesi = driver.getWindowHandles(); for (String child:TabListesi) { if(child.equalsIgnoreCase(anasayfa)) //tab anasayfaya esitse { driver.switchTo().window(anasayfa) ; links.get(i).click(); //Bu

XPath ve CSSSelector ile Linklerin Metnini Ekrana Yazdırma

İlk olarak XPath ve CSSSelector ile blogumdaki en güncel iki linkin yazısını getireceğim. XPath ve CSS değerlerini denetçi ile ilgili alanın üstüne gelip sağ tıklayın. Kopyala seçeneğinde CSS seçici ve XPath değerlerini alıp kodunuzda ilgili yere ekleyebilirsiniz. Örnek Kod: Burada geçmişi hatırlama seçeneği kapalı olan tarayıcı ile test yapıldı. public void test() throws InterruptedException { driver.navigate().to(BaseUrl); driver.findElement(By.cssSelector("html body header.header div.header--content div.header--buttons a.sign-in.ga-header-sign-in")).click(); driver.findElement(By.cssSelector("#identifierId")).clear(); driver.findElement(By.cssSelector("#identifierId")).sendKeys(" mailadresim "); driver.findElement(By.xpath("//span[contains(@class,'RveJvd snByac')]")).click();/ /ileri tuşuna basıyoruz Thread.sleep(2000); driver.findElement(By.cssSelector(".I0VJ4d > div:n

Aynı Attribute Verisi ve Dinamik/Değişen Elementlerle Uğraşma

Aynı Id ve Dinamik Elemetlerle Uğraşma Senaryo: Bazen bir sayfada birden fazla elementin id si aynı olabilir. Bunu çözmek için bu elementlerin tek olan bilgisini kullanmak gerekir. Bunun için css selector kullanılabilir. <p> <input id="Lid" type="text"  placeholder="Username"....> </p> <p> input id = "Lid" type="password"...> </p> Bu örnekte username ve password ün id si aynı. XPath kullanılırsa sayfayı test ederken test etme süresini artırabilir ve her sayfada yapılan değişiklikte XPath değerinin güncellenmesi gerekebilir. Bu yüzden CSS selector kullanmak daha mantıklı. Örnek Kod: Gmail'de Yeni Hesap Oluşturma public void setUp() throws Exception { System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver-v0.23.0-win64\\geckodriver.exe");   driver = new FirefoxDriver();   driver.manage().window().maximize();   driver.manage