Implementação do Padrão POM em Python para Testes de Autenticação

O padrão Page Object Model (POM) pode ser estruturado utilizando uma arquitetura de quatro camadas para orgnaizar testes de automação de forma eficiente.

Primeira camada: camada BaseNavegador, contém atributos e métodos comuns a todas as páginas, como interações com elementos e navegação. Crie uma pasta base e um arquivo base_navegador.py.

Segunda camada: camada ObjetosPagina, define classes específicas para cada página do aplicativo. Por exemplo, uma classe PaginaLogin e uma classe PaginaCadastro. Crie uma pasta objetos_pagina e um arquivo elementos_pagina.py.

Terceira camada: camada CasosTeste, contém os fluxos de negócio e casos de teste do projeto. Crie uma pasta casos_teste e um arquivo teste_autenticacao.py.

Quarta camada: DadosTeste, gerencia os dados utilizados nos testes.

Código da primeira camada (BaseNavegador):

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

class BaseNavegador:
    def __init__(self, driver_path=r'C:\Caminho\Para\ChromeDriver\chromedriver.exe'):
        self.servico = Service(driver_path)
        self.navegador = webdriver.Chrome(service=self.servico)
    
    def encontrar_elemento(self, seletor):
        return self.navegador.find_element(*seletor)
    
    def inserir_dado(self, seletor, valor):
        return self.encontrar_elemento(seletor).send_keys(valor)
    
    def acionar_elemento(self, seletor):
        return self.encontrar_elemento(seletor).click()

Código da segunda camada (elementos_pagina.py):

from selenium.webdriver.common.by import By
from base.base_navegador import BaseNavegador

class PaginaLogin(BaseNavegador):
    campo_usuario = (By.XPATH, "//input[@name='username']")
    campo_senha = (By.XPATH, "//input[@type='password']")
    campo_codigo = (By.XPATH, "//input[@id='verification-code']")
    botao_entrar = (By.XPATH, "//button[@type='submit']")
    url_pagina = "https://exemplo.com/login"
    
    def realizar_login(self, usuario, senha, codigo):
        self.navegador.get(self.url_pagina)
        self.inserir_dado(seletor=self.campo_usuario, valor=usuario)
        self.inserir_dado(seletor=self.campo_senha, valor=senha)
        self.inserir_dado(seletor=self.campo_codigo, valor=codigo)
        self.acionar_elemento(seletor=self.botao_entrar)

Código da terceira camada (teste_autenticacao.py):

import unittest
from selenium import webdriver
from objetos_pagina.elementos_pagina import PaginaLogin

class TesteAutenticacao(unittest.TestCase):
    def teste_login_valido(self):
        # Instanciar objeto da página de login
        pagina_login = PaginaLogin()
        credenciais = {
            'usuario': 'teste_usuario',
            'senha': 'SenhaForte123',
            'codigo': '1234'
        }
        pagina_login.realizar_login(
            usuario=credenciais['usuario'],
            senha=credenciais['senha'],
            codigo=credenciais['codigo']
        )

Com essa estrutura, o framework POM para testes de autenticação está implementado, promovendo uma organização clara e manutenção facilitada dos testes de automação.

Tags: Python Selenium POM Automação Testes

Publicado em 6-14 00:30 por Thomas