Selenium Webdriver’da Cucumber Kullanımı
Bu makalemizle birlikte selenium webdriver’da cucumber kullanarak örnek bir otomasyon projesi oluşturalım.
Projenin github linki:
https://github.com/sevilayagil/SeleniumCucumberExample
Cucumber, düz metin olarak yazılmış senaryolarımızı, otomatize testlere dönüştüren bir test otomasyon aracıdır.
Projemizi oluştururken kodlarımızı tek bir yerden yönetmek için BaseStep mantığını kullanacağım.Senaryolarımızı yazmadan önce projemiz için gerekli ortamları sağlayalım. Öncelikle Intelliji açalım yeni bir maven projesi oluşturalım.
Geliştirme Ortamını Ayarlama
Adım 1:Maven Projesi Oluşturma:(Create Maven Project)
Proje için bir web sitenin kayıt olma formunu otomatize edelim.
Pom.xml’e Gerekli Kütüphanelerin Yüklenmesi
Pom.xml dosyasına <dependencies></dependencies> eklenir.
Dependecies içerisine otomasyon boyunca kullanılacak kütüphaneler eklenir.
Projemiz boyunca kullanacağımız kütüphaneleri dependecies blogunun içerisine ekleyebilirsiniz.
Aynı zamanda ihtiyaç olan kütüphaneler için https://mvnrepository.com adresini de ziyaret edebilirsiniz. Yeni bir maven projesi oluşturduktan sonra projemizde kullanmak için gerekli pluginleri ekleyelim.
Adım 2: Plugin Ekleme (Add Cucumber for Java IntelliJ IDEA plugin)
Gereksinimler:
- cucumber for java
- gherkin
Buradan cucumber for java ve gherkin pluginlerini ekliyoruz.
Adım 3: Proje Dizini Oluşturma (Project Directory Structure)
Şimdi sıra geldi projemizin iskelet kısmını oluşturmaya
Src>test> java’nın altına packageler oluşturuyoruz.
Kullandığımız packageler Runner,Feature,Base,Steps olarak packegelerimizi oluşturuyoruz.Oluşturduktan sonra görüntümüz şu şekilde olacaktır.
Geliştirmeye Başlama (Getting Started with Development)
Adım 1:Feature dosyası oluşturma:
Features>New>File a tıklayıp file name alanına Register.feature yazalım. Burada .feature yazarak dokumanın feature dosyası olduğunu belirtmiş oluyoruz.
Gherkin söz dizimini kullanarak kayıt olma senaryomuzu yazmaya başlayalım.
Feature dosyasında kayıt olmak için gerekli adımları yazdıktan sonra Alt+enter ile tüm steplerin içeriğini yazmaya başlayalım.
Adım 2: Step Definition Oluşturma (Writing Step Definitions)
Steps paketinin altına yerini belirterek Step adını belirtiyorum.
Gerekli adımları oluşturtan sonra adımların içeriğini yazmaya başlayabiliriz.
Adım 3: BaseStep oluşturma (Writing Base Step)
Elementlerin aksiyonları belirtirken Base paketimin altında Baseclass’da tanımlamalar yapıp tüm methodlarımı buradan referans alarak çağıracağım.
Öncelikle Base Paketinin altına diğer adımlardaki gibi bir class oluşturarak (Ben adını BaseStep olarak verdim) yapımızı oluşturalım.
Base Step içerisinde Chromdriver exe yolu belirtilirir.(Öncesinde chrome driver exeyi localimize indirmemiz gerekiyor.) Bu aşamada driver tanımlarını yapıyoruz.
Sonrasında enum oluşturarak otomasyon boyunca kullanacağımız elementlerin locaterlarını tanımlıyoruz.
Yine bir enum tanımlayarak timeout sürelerini kategorize ediyoruz. Burası parametrik bir alan burada kullanılan süreler sizin tercihinize göre değişkenlik gösterebilir.
Timeout methodunu tanımlıyoruz. Burada element görünür olana kadar driveri bekletiyoruz.
FindelementClick methodunu tanımlıyoruz.
Yine tüm senaryolarda çağıracağımız findelement methodunu da yazıyoruz.
Sayfayı scrool ederken kullanabileceğimiz javascript methodlarını da tanımlayalım.
Bir de tabiki tüm işlemler bittikten sonra driverı kapatacak bir method da yazalım.
Şimdi tüm baseclass yapımızı kurmuş olduk.
Geri kaldı stepler . Hadi başlayalım :)
Element locator extension kurulumu
Burada sizlere hayat kurtaracak bir şeyden bahsedeceğim.Otomasyona ilk başladığım günlerde elementlerin idsini classlarını vs bulmaya çalışırken sayfada öğeyi denetleme yapıyordum.Fakat sonrasında element locator extensionu buldum.Bunu chrome marketten indirerek işlerimizi hızlandırdım .Epey işe yaradı :)
Steplerimizin içlerini dolduralım.
Steplerimizi güzelce yazdık . Şimdi runner classımızı oluşturalım.
Adım 4:Runner oluşturma (Writing Test Runner)
Projemizi çalıştırmak için daha önce oluşturduğumuz runner paketine sağ tıklayarak runner classımızı oluşturuyoruz
Adım 5:Rapor oluşturma (Generating Reports)
Runnerda pluginde belirterek üç tip rapor çıktısı oluşturabiliyoruz. Runnerda rapor türlerini belirtikten sonra projemizi çalıştırdığımızda raporların targetin altına geldiğini göreceksiniz.Otomasyonu çalıştırdığımızda raporumuz da aşağıdaki şekilde olacak.
Şimdilik hepsi bu kadar.Bir sonraki yazılarımızda görüşmek dileğiyle:)