Sobes.tech
Junior

Başlık için yapıyı nasıl organize ediyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Başlık, başlık öğeleriyle etkileşim kurmak için konumlayıcılar ve yöntemler içeren Page Object olarak temsil edilebilir (logo, menü öğeleri, arama düğmeleri, sepet vb.).

Konumlayıcılar, bir sınıfta veya ayrı bir yapılandırma dosyasında saklanabilir.

Sınıf yapısı yaklaşık olarak şu şekilde olacaktır:

public class HeaderPage {

    // Başlık öğelerinin konumlayıcıları
    private final By logo = By.cssSelector(".header__logo");
    private final By searchBar = By.id("search-input");
    private final By cartIcon = By.xpath("//a[@class='header__cart']");

    // Öğelerle etkileşim yöntemleri
    public void clickLogo() {
        driver.findElement(logo).click();
    }

    public void enterSearchTerm(String term) {
        driver.findElement(searchBar).sendKeys(term);
    }

    public void clickCartIcon() {
        driver.findElement(cartIcon).click();
    }

    // Menü gibi başlık içi öğelerle çalışma yöntemleri
    public MenuItem clickMenuItem(String itemName) {
        // Menü öğesini bulma ve tıklama mantığı
        return new MenuItem(/*...*/); // Menü öğesi nesnesini döndürür
    }
}

Açılır menüler veya alt menüler içeren daha karmaşık başlıklar için, bu öğeler için ayrı Page Object'ler oluşturmak gerekebilir ve bunlara başlık yöntemleri aracılığıyla erişilebilir.

Proje klasör yapısı örneği:

src/
├── main/
│   └── java/
│       └── com/
│           └── example/
│               └── project/
│                   └── pages/
│                       ├── HeaderPage.java
│                       └── components/
│                           ├── MenuItem.java
│                           └── SearchBar.java
└── test/
    └── java/
        └── com/
            └── example/
                └── project/
                    └── tests/
                        └── HeaderTests.java

Testlerde, HeaderPage'den alınan yöntemler kullanılarak başlıkla ilgili işlemler ve kontroller yapılacaktır.

public class HeaderTests extends BaseTest { // Driver'ın başlatılmasını sağlayan temel sınıf

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Ana sayfaya geçişin gerçekleştiğinin doğrulanması
        // Örneğin, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Arama ikonuna tıklama yöntemi varsayılır
        // Arama sonuçlarının gösterildiğinin doğrulanması
    }
}

Bu yaklaşım, başlıkla ilgili kodun okunabilirliğini, sürdürülebilirliğini ve tekrar kullanılabilirliğini sağlar.