Page Object Model (POM) ile Test Otomasyonu Mimarisi
13 Eylül 2025
Test otomasyonu projelerinde en sık karşılaşılan sorunlardan biri, kodun büyüdükçe karmaşıklaşması ve bakımı zorlaşmasıdır. Özellikle Selenium, Cypress veya benzeri araçlarla yazılan testler proje ilerledikçe tekrar eden kod blokları, zor güncellenen locator’lar ve düşük okunabilirlik gibi problemler yaratır. İşte bu noktada Page Object Model (POM) devreye girer.
Test otomasyonu projelerinde en sık karşılaşılan sorunlardan biri, kodun büyüdükçe karmaşıklaşması ve bakımı zorlaşmasıdır. Özellikle Selenium, Cypress veya benzeri araçlarla yazılan testler proje ilerledikçe tekrar eden kod blokları, zor güncellenen locator’lar ve düşük okunabilirlik gibi problemler yaratır. İşte bu noktada Page Object Model (POM) devreye girer.
Page Object Model (POM) Nedir?
Page Object Model, test otomasyon projelerinde **sayfa bazlı bir mimari** kurmayı sağlayan bir tasarım desenidir. Temel mantığı, her bir web sayfasını veya uygulama ekranını temsil eden ayrı bir sınıf (class) oluşturmaktır. Bu sınıf:
İlgili sayfanın element locator’larını,
Bu elementler üzerinde yapılacak aksiyonları (click, sendKeys, verify gibi),
tek bir yerde barındırır.
Böylece test senaryoları sadece bu sınıfları kullanarak sayfa ile etkileşime geçer.
POM Kullanmanın Avantajları
Bakım Kolaylığı:** Bir elementin locator’ı değiştiğinde sadece ilgili sayfa sınıfında güncellemek yeterlidir.
Kod Tekrarını Azaltır: Aynı elementin tekrar tekrar locate edilmesinin önüne geçer.
Okunabilirlik Sağlar: Test senaryoları “ne test edildiğini” net biçimde gösterir.
Yeniden Kullanılabilirlik: Aynı sayfa sınıfı farklı test senaryolarında tekrar kullanılabilir.
POM’un Yapısı
Tipik bir POM mimarisinde şu klasör yapısı bulunur:
/tests
LoginTest.java
CheckoutTest.java
/pages
LoginPage.java
HomePage.java
/utils
DriverFactory.java
Örnek: LoginPage.java
java
public class LoginPage {
WebDriver driver;
// Constructor
public LoginPage(WebDriver driver) {
this.driver = driver;
}
// Locators
By username = By.id("username");
By password = By.id("password");
By loginBtn = By.id("login");
// Actions
public void setUsername(String user) {
driver.findElement(username).sendKeys(user);
}
public void setPassword(String pass) {
driver.findElement(password).sendKeys(pass);
}
public void clickLogin() {
driver.findElement(loginBtn).click();
}
}
Bu sınıf, login sayfasındaki tüm elementleri ve aksiyonları kapsar.
Sonuç
Page Object Model (POM), test otomasyon projelerinde **temiz kod, sürdürülebilirlik ve verimlilik** sağlar. Doğru şekilde kurgulanan bir POM yapısı sayesinde testleriniz daha az bakım gerektirir, daha hızlı geliştirilir ve daha güvenilir hale gelir. Eğer siz de Selenium, Cypress veya başka bir test aracı ile çalışıyorsanız, projenize POM mimarisini entegre etmeyi mutlaka düşünmelisiniz.
Page Object Model (POM) Nedir?
Page Object Model, test otomasyon projelerinde **sayfa bazlı bir mimari** kurmayı sağlayan bir tasarım desenidir. Temel mantığı, her bir web sayfasını veya uygulama ekranını temsil eden ayrı bir sınıf (class) oluşturmaktır. Bu sınıf:
İlgili sayfanın element locator’larını,
Bu elementler üzerinde yapılacak aksiyonları (click, sendKeys, verify gibi),
tek bir yerde barındırır.
Böylece test senaryoları sadece bu sınıfları kullanarak sayfa ile etkileşime geçer.
POM Kullanmanın Avantajları
Bakım Kolaylığı:** Bir elementin locator’ı değiştiğinde sadece ilgili sayfa sınıfında güncellemek yeterlidir.
Kod Tekrarını Azaltır: Aynı elementin tekrar tekrar locate edilmesinin önüne geçer.
Okunabilirlik Sağlar: Test senaryoları “ne test edildiğini” net biçimde gösterir.
Yeniden Kullanılabilirlik: Aynı sayfa sınıfı farklı test senaryolarında tekrar kullanılabilir.
POM’un Yapısı
Tipik bir POM mimarisinde şu klasör yapısı bulunur:
/tests
LoginTest.java
CheckoutTest.java
/pages
LoginPage.java
HomePage.java
/utils
DriverFactory.java
Örnek: LoginPage.java
java
public class LoginPage {
WebDriver driver;
// Constructor
public LoginPage(WebDriver driver) {
this.driver = driver;
}
// Locators
By username = By.id("username");
By password = By.id("password");
By loginBtn = By.id("login");
// Actions
public void setUsername(String user) {
driver.findElement(username).sendKeys(user);
}
public void setPassword(String pass) {
driver.findElement(password).sendKeys(pass);
}
public void clickLogin() {
driver.findElement(loginBtn).click();
}
}
Bu sınıf, login sayfasındaki tüm elementleri ve aksiyonları kapsar.
Sonuç
Page Object Model (POM), test otomasyon projelerinde **temiz kod, sürdürülebilirlik ve verimlilik** sağlar. Doğru şekilde kurgulanan bir POM yapısı sayesinde testleriniz daha az bakım gerektirir, daha hızlı geliştirilir ve daha güvenilir hale gelir. Eğer siz de Selenium, Cypress veya başka bir test aracı ile çalışıyorsanız, projenize POM mimarisini entegre etmeyi mutlaka düşünmelisiniz.
Yazar: Mert Akbağ
Bu yazıyı beğendiniz mi?
Yazılım testi hakkında daha fazla içerik için blog sayfamı ziyaret edin veya benimle iletişime geçin.