Sobes.tech
Junior

Kuidas organiseerite päise struktuuri?

sobes.tech AI

Vastus AI-lt

Virsbilde võib olla esitatud kui Page Object, mis sisaldab lokalisaatoreid ja meetodeid virsme elementidega suhtlemiseks (logo, menüüpunktid, otsingunupud, ostukorv jne).

Lokalisaatoreid saab hoida klassis või eraldi konfiguratsioonifailis.

Klassi struktuur võiks olla umbes selline:

public class HeaderPage {

    // Virsme elementide lokalisaatorid
    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']");

    // Meetodid elementidega suhtlemiseks
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Meetodid elementidega töötamiseks virsmes, näiteks menüü
    public MenuItem clickMenuItem(String itemName) {
        // Otsingu ja klõpsu loogika menüüpunktile
        return new MenuItem(/*...*/); // Tagastame menüüpunkti objekti
    }
}

Raskemate virsmete puhul, millel on rippmenüüd või alammenüüd, võib olla vajalik luua eraldi Page Object'id nende elementide jaoks, millele pääseb ligi virsme meetodite kaudu.

Projekti kaustastruktuuri näide:

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

Testides kasutame HeaderPage meetodeid tegevuste ja kontrollide tegemiseks, mis on seotud virsmega:

public class HeaderTests extends BaseTest { // Baasklass initsialiseerimiseks

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Kontroll, et toimus ümbersuunamine avalehele
        // Näiteks assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Eeldatakse, et on meetod otsingukonsooli klõpsamiseks
        // Kontroll, et otsingutulemused kuvatakse
    }
}

Selline lähenemine tagab koodi loetavuse, hooldatavuse ja korduvkasutatavuse, töötades erinevatel lehtedel virsmega.