Page Object Model Nedir ? Nasıl Kullanılır ?

Mustafa Yasar Çelik
Finartz
Published in
2 min readDec 24, 2020

Merhabalar,

Sizlere bu yazımda web otomasyonlarında sıklıkla karşımıza çıkan Selenium WebDriver ve Java kullanılarak oluşturduğum Page Object Model’den bahsedeceğim.

POM, kullanıcı ara yüzündeki elemanlar için nesne deposu oluşturan bir tasarım modelidir. Uygulamanın her web sayfasına karşılık gelecek bir page classı oluşturulur. Bu classın içerisine sayfadaki WebElementleri ve sayfa içerisinde kullanılacak WebMethodları tanımlayabiliriz. POM’un avantajlarından aşağıdaki şekilde bahsedebiliriz;

· Kod tekrarını engeller.

· Kodun okunabilirliği arttırır.

· Kodun bakımı kolaylaştırır.

POM için birazda örnek üzerinden ilerleyelim;

Tablo-1

Kendi otomasyonunuzda test ettiğiniz web sayfalarına göre proje yapınızı yukardaki gibi oluşturabilirsiniz.

Web sayfalarına göre projemizi hazırladıktan sonra birazda classlarımızın içerisini nasıl doldurabileceğimizi inceleyelim.

Tablo-2

Öncelikle bir BasePage classı oluşturabiliriz ve bu class içerisinde yukarda görebileceğiniz gibi WebDriverımızı, After, Before testlerde kullanacağımız methodları ve sıklıkla kullanacağımız methodlaştırdığımız kod satırlarını ekleyebiliriz.

Tablo-3

Yukarıda ise LoginPage classımızın içeriğini görebilirsiniz. Gördüğünüz gibi LoginPage classımızda login sayfasında kullanabileceğimiz bir login methodu ve login sayfasına ait loginUrl değişkenine atadığım bir url bulunmaktadır.

Tablo 3’de yer alan kod satırı 11–14 web elementlerini tanımladığımız satırdır. Yine aynı tabloda yer alan kod satırı 16–22 login sayfamızda kullanabileceğimiz login methodudur.

Test senaryolarını hazırlarken LoginPage classımızda oluşturmuş olduğumuz login methodunu nasıl çağırabileceğimizi inceleyelim;

Tablo-4

Tablo-4’de görebileceğiniz gibi JUnit’in @Test anotasyonunu kullanarak oluşturduğumuz login testinde, LoginPage classımızda yazmış olduğumuz login methodunu çağırarak test senaryomuzu oluşturabiliriz.

Böylece küçük bir örnekle POM’dan ve otomasyonumuzu bu yapıya nasıl taşıyabileceğimizden kısaca bahsetmeye çalıştım.

Son olarak özellikle UI otomasyonlarında POM yapısını kullanmanızı en azından denemenizi tavsiye ederim. Kullanmaya başladığımdan beri çok daha kolay okunabilir ve bakımı kolay bir projeye sahibim.

Okuduğunuz için teşekkürler.

--

--