21 Mart 2019

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.

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 eyildirim@proven.com.tr adresine e-posta atarak ulaşabilirsiniz.

Emin Eray YILDIRIM

 

Referanslar

https://solutionscafe.wordpress.com/2014/01/06/page-object-pattern/

https://www.guru99.com/locators-in-selenium-ide.html