Sobes.tech
Junior

Kaip organizuojate antraštės struktūrą?

sobes.tech AI

Atsakymas iš AI

Antraštė gali būti pateikta kaip Page Object, kuriame yra lokalizatoriai ir metodai sąveikai su antraštės elementais (logotipas, meniu punktai, paieškos mygtukai, krepšelis ir kt.).

Lokalizatorius galima saugoti klasėje arba atskirame konfigūracijos faile.

Klasės struktūra bus maždaug tokia:

public class HeaderPage {

    // Antraštės elementų lokalizatoriai
    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']");

    // Metodai sąveikai su elementais
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Metodai darbui su elementais antraštėje, pvz., meniu
    public MenuItem clickMenuItem(String itemName) {
        // Paieškos ir paspaudimo logika meniu punktui
        return new MenuItem(/*...*/); // Grąžiname meniu punkto objektą
    }
}

Sudėtingesniems antraščių su išskleidžiamais meniu ar submeniu gali prireikti sukurti atskirus Page Object'us šiems elementams, prie kurių bus prieinama per antraštės metodus.

Pavyzdys projekto katalogų struktūros:

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

Testuose naudosime HeaderPage metodus veiksmams atlikti ir patikrinimams, susijusiems su antrašte:

public class HeaderTests extends BaseTest { // Bazinė klasė inicijuoti vairuotoją

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Patikrinimas, ar įvyko perėjimas į pagrindinį puslapį
        // Pvz., assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Tikimasi, kad yra metodas paieškos ikonai paspausti
        // Patikrinimas, ar rodomi paieškos rezultatai
    }
}

Toks požiūris užtikrina kodo skaitomumą, palaikymą ir pakartotinį naudojimą dirbant su antrašte skirtinguose programos puslapiuose.