Sobes.tech
Junior

Come organizzi la struttura per l'intestazione?

sobes.tech AI

Risposta dell'AI

L'intestazione può essere rappresentata come un Page Object contenente localizzatori e metodi per interagire con gli elementi dell'intestazione (logo, voci di menu, pulsanti di ricerca, carrello, ecc.).

I localizzatori possono essere memorizzati in una classe o in un file di configurazione separato.

La struttura della classe sarà circa così:

public class HeaderPage {

    // Localizzatori degli elementi dell'intestazione
    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']");

    // Metodi per interagire con gli elementi
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Metodi per lavorare con gli elementi all'interno dell'intestazione, ad esempio, il menu
    public MenuItem clickMenuItem(String itemName) {
        // Logica per cercare e cliccare su un elemento di menu
        return new MenuItem(/*...*/); // Restituisce l'oggetto dell'elemento di menu
    }
}

Per intestazioni più complesse con menu a discesa o sotto-menu, potrebbe essere necessario creare Page Object separati per questi elementi, accessibili tramite metodi dell'intestazione.

Esempio di struttura delle cartelle del progetto:

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

Nei test, utilizzeremo i metodi di HeaderPage per eseguire azioni e verifiche relative all'intestazione.

public class HeaderTests extends BaseTest { // Classe base per l'inizializzazione del driver

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Verifica che si sia navigati alla pagina principale
        // Ad esempio, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Si presume che ci sia un metodo per cliccare sull'icona di ricerca
        // Verifica che vengano visualizzati i risultati di ricerca
    }
}

Questo approccio garantisce leggibilità, manutenibilità e riutilizzo del codice quando si lavora con l'intestazione su diverse pagine dell'applicazione.