Sobes.tech
Junior

Como você organiza a estrutura para o cabeçalho?

sobes.tech IA

Resposta da IA

O cabeçalho pode ser representado como um Page Object que contém localizadores e métodos para interagir com os elementos do cabeçalho (logotipo, itens do menu, botões de pesquisa, carrinho, etc.).

Os localizadores podem ser armazenados numa classe ou num ficheiro de configuração separado.

A estrutura da classe será aproximadamente assim:

public class HeaderPage {

    // Localizadores dos elementos do cabeçalho
    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']");

    // Métodos para interagir com os elementos
    public void clickLogo() {
        driver.findElement(logo).click();
    }

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

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

    // Métodos para trabalhar com elementos dentro do cabeçalho, por exemplo, o menu
    public MenuItem clickMenuItem(String itemName) {
        // Lógica para procurar e clicar num item de menu
        return new MenuItem(/*...*/); // Devolve o objeto do item de menu
    }
}

Para cabeçalhos mais complexos com menus suspensos ou submenus, pode ser necessário criar Page Objects separados para esses elementos, acessíveis através de métodos do cabeçalho.

Exemplo de estrutura de pastas do projeto:

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

Nos testes, utilizaremos os métodos de HeaderPage para realizar ações e verificações relacionadas com o cabeçalho.

public class HeaderTests extends BaseTest { // Classe base para inicialização do driver

    @Test
    public void testLogoClickNavigatesToHomePage() {
        HeaderPage header = new HeaderPage();
        header.clickLogo();
        // Verificação de que ocorreu navegação para a página inicial
        // Por exemplo, assert.assertEquals(driver.getCurrentUrl(), "https://example.com/");
    }

    @Test
    public void testCanSearchFromHeader() {
        HeaderPage header = new HeaderPage();
        header.enterSearchTerm("test product");
        header.clickSearchIcon(); // Presume-se que há um método para clicar no ícone de pesquisa
        // Verificação de que os resultados de pesquisa são exibidos
    }
}

Esta abordagem garante legibilidade, manutenção e reutilização do código ao trabalhar com o cabeçalho em diferentes páginas da aplicação.