Selenium Web Driver ve Page Factory Kullanarak Web Otomasyonu
Selenium web driver gerçek programlama dilleri kullanılarak web uygulamalarında test otomasyonunu mümkün kılan, testlerin tüm browserlarda çalışmasına imkân sağlayan bir yazılım kütüphanesidir. Yazılım kütüphanesi olmasından kaynaklı programlama dillerinin tüm özellikleri kullanılabilmektedir. Böylece script dillerinin kısıtlı kod yapısından kurtulup, programa dilleri üzerinde çeşitli tasarım kalıpları kullanarak test kodunu daha sistematik bir şekilde geliştirme olanağı sunar.
Selenium web driver Java, .Net, PHP, Phyton, Perl, Ruby gibi dilleri desteklemesiyle geniş bir alanda kullanabilmektedir.
Çalışma mantığı oldukça basit olup Dom (Document Object Model) üzerindeki elementlere ulaşıp bu elementlere web driver kütüphanesi içerisinde tanımlanmış olan fonksiyonlar yardımıyla işlem yaptırma mantığına dayanır.
Elementlere ulaşabilmek için Dom üzerinde elementlerin kullandığı ID, name, link text, tag gibi özellikleri kullanılır. Tek özellik olarak tanımlamanın yetersiz kaldığı yerlerde tag-ID, tag-class, tag-attribute ya da tag, class ve atrribute olarak üçü birden de tanımlamak için kullanılabilir.
Elementlere Ulaşma Yöntemi | Açıklama | Örnek |
ID | Elementin ID’si | ID=email |
Name | Elementin adı | Name=userName |
Link Text | Elementin yazısı | link=REGISTER |
Tag ve ID | Elementin etiket ve id’si | css=input#email |
Tag ve Class | Elementin etiket ve adı | css=input.inputtext |
Tag ve Attribute | Elementin etiket ve özelliği | css=input[name=lastName] |
Tag,Class ve Attribute | Elementin etiket, sınıf ve özelliği | css=input.inputtext[tabindex=1] |
Şekil 1.Selenium’da elementlerin tanımlanması
Elementlerin ID, class gibi özellikleri uygulama geliştirilirken değişebilir. Örneğin Devexpress, Telerik gibi üçüncü parti yazılımlar elementlerin ID’sinin önüne kendi versiyon numarasını atabilmektedir. Bu da bu uygulamalar güncellendiğinde ID‘lerin değişmesine sebep olmakta ve Dom üzerinden alınan web elementlerinin tanımını geçersiz kılmaktadır.
Böyle bir durumda XPath yardıma koşar. Xpath’in fonksiyonları, web elementleri ile birlikte kullanılarak elementin tanımının sadece belli bir bölümünde arama yapılmasını sağlar. Örneğin “contains with” fonksiyonu kullanılırsa elementin tanımı ID’lerin veya class’ların içindeki ifadeyi içerecek şekilde tanımlanabilir. Elementler bu özelliklerine göre kod içerisinde property olarak tanımlanır ve üzerlerinde işlemler yapılır.
Elementleri tanımlandıktan sonra fonksiyonlar oluşturularak elementler üzerinde işlemler yaptırılır. Örneğin Click() fonksiyonuyla elementlere tıklama yaptırabilir, SendKeys() fonksiyonuyla textbox’lara değer atama gibi işlemler gerçekleştirilebilir.
Fonksiyonla işlemleri yaptırmanın yanı sıra Selenium’u asıl çekici hale getiren özelliği, belirli bir tasarım kalıbı kullanarak uygulamanın elementleri ve fonksiyonları çıkarılıp, kod yeniden kullanılabilirliğini en üst düzeye çekmesidir.
Şekil 2.Web uygulaması Login sayfasının Page Object tasarımı
Bunu da Selenium’un sunmuş olduğu Page Object Model(POM) ve Page Factory tasarım kalıplarıyla gerçekleştiriyoruz. Web sitesindeki her sayfa bir sınıfa denk gelecek şekilde sınıflar oluşturulur, içinde ise elementler property şeklinde tanımlanır, elementlerin o sayfa içerisindeki kullanım adımları ise fonksiyonlar halinde oluşturulur.
Bütün uygulamanın ara yüzü bu şekilde elementlerine ve fonksiyonlara ayrıldıktan sonra yazılan kod kütüphane(.dll) haline getirilir. Bundan sonra yeni projede bu kütüphane eklenerek test senaryoları yazılır, böylece test bölümü ile uygulamanın ara yüzünü ve fonksiyonlarını çıkardığımız kısım ayrılmış olunur.
Herhangi bir tasarım değişikliğinde, değişiklik yapılan sayfanın sınıftaki elementleri değiştirilecek ve bakım maliyeti oldukça düşecektir. Bunun yanında işlemlerden test senaryosu yazılan taraf etkilenmeyecek ve test senaryoları değişiklik yapılmasından kurtarılmış olacaktır.
Otomasyondaki hedef az kodla maliyetiyle çok senaryonun koşabilmesidir. Selenium Web Driver ve Page Factory tasarım kalıbı kullanılarak oluşturulan kodların yeniden kullanılabilirliği yüksek olduğundan web otomasyonunda Selenium kullanmak iyi bir tercih olacaktır.
Konuyla ilgili daha detaylı bilgiye www.proven.com.tr üzerinden veya [email protected] adresine e-posta atarak ulaşabilirsiniz.
Emin Eray YILDIRIM
Referanslar
https://solutionscafe.wordpress.com/2014/01/06/page-object-pattern/