Page Object Model Nedir? Selenium’da Java ile Page Object Model Kullanımı

Asiye Nur Kelle
2 min readMay 7, 2021

--

Selamlar, bu yazımda sizlere UI test otomasyonlarında sıklıkça karşımıza çıkan bir yaklaşım olan Page Object Model’den bahsedeceğim.

Page Object Model, temelde test otomasyonlarında test objeleriyle test scriptlerini ayırmamızı sağlayan bir yaklaşımdır. Bu yaklaşıma göre, uygulamamızda bulunan her web sayfası bir sınıfı temsil etmelidir.

Page Object Model’de ,uygulamanın her web sayfasına karşılık gelecek bir Page classı oluştururuz. Bu classın içerisinde sayfadaki WebElementleri ve sayfa içerisinde kullanılacağımız web metotlarını tanımlarız.

Peki Neden Page Object Model Kullanmalıyız?

  • Page Object Model kodun bakımını ve okunurluğunu kolaylaştırır.
  • Scriptler ve objeler birbirinden ayrıldığı ve test sınıfında sadece tanımlanan metot ve işlevi bulunduğundan kod daha anlaşılabilir bir hale gelir.
  • Kod tekrarını önler.

Örneğin; Uygulama içerisinde kullanılan elementlerde herhangi bir değişiklik olduğu takdirde, her bir test senaryosunu güncellemek yerine ilgili page class değiştirilir ve bu sayede tek bir yerden ilgili senaryolar toplu olarak güncellenebilir.

Koda geçmeden birazda Page Object Model hakkındaki Best Practices’ lere değinelim.

  • Öncelikle yazmış olduğumuz testlerin her biri birbirinden bağımsız şekilde çalışabilmelidir.
  • POM’ e göre idealde bir Page Object’ in içerisinde Assertion’ lar bulunmamalıdır. Assertion’ lar mutlaka test classımızın içerisinde yer almalıdır.
  • Sayfalar arası geçiş yaptığımız durumlarda metodumuz mutlaka geçiş yaptığımız Page Object’ i geri dönmelidir.
  • Bir Page Object adlandırılırken mutlaka bize o sayfanın içeriğinde ne olduğunu ifade etmelidir.

Artık örnek bir senaryo üzerinden ufak bir test yazabiliriz. Ben bu örnek esnasında TestNG Framework’ünü ve Maven’ı kullanarak ilerleyeceğim.

Kısaca TestNG ’den bahsedecek olursak;

TestNG testlerimizi koşarken kullanabileceğimiz bir test frameworküdür. TestNG’ nin diğer test frameworklerine göre bize sağladığı bazı avantajlar şu şekildedir:

  • Multi Thread test desteği
  • Parametre kullanımı
  • DataDriven property’si ile Data Driven Test
  • Loglama
  • Esnek Test Konfigürasyonu
  • IDE’ler için plugin desteği

Örnek Senaryomuz

  1. https://tr.wikipedia.org/wiki/Anasayfa adresine gidilir.
  2. Anasayfada bulunun searchbar’a “Telefon” anahtar kelimesi girilir.
  3. Arama butonuna tıklanır.
  4. Gelen sonuçların anahtar kelimemize uygun geldiği kontrol edilir.

Öncelikle testlerimizde ortak olarak kullanacağımız metotları bulunduran BaseTest sınıfını oluşturuyoruz. Bu esnada TestNG’ nin bize sağladığı property’ler ile test metotlarından önce çalışacak kodlarımızı BeforeMethod’ un içerisine yazıyoruz. Daha sonra test metotları tamamlandıktan sonra çalışacak olan kodlarımızı ise AfterMethod içerisine yazıyoruz.

Test esnasında kullanacağımız click vs gibi eventları tanımladığımız ve Page Objelerimizde miras aldığımız WebDriverHelper classını oluşturuyoruz.

Daha sonra BasePage classımızı oluşturuyoruz.

Şimdi artık testimize ait PageObject classımız olan SearchPage’ i oluşturabiliriz.

Son olarakta testin gerçekleşeceği SearchTest classımızı oluşturarak UI Testimizi tamamlıyoruz.

Kodların tamamına buradan ulaşabilirsiniz, iyi çalışmalar 😊

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Asiye Nur Kelle
Asiye Nur Kelle

Written by Asiye Nur Kelle

Software Developer in Test @Trendyol

No responses yet

Write a response