🧩 ¿Qué es una Clase en programación?
🧩 ¿Qué es una Clase en programación?
Programación y trabajo con código para Testers
Programación Orientada a Objetos
Programación Orientada a Objetos
Conceptos clave de la Programación Orientada a Objetos para Automation Testing
Conceptos clave de la Programación Orientada a Objetos para Automation Testing
Los principios SOLID
Los principios SOLID
Trabajando con código en un repositorio
Trabajando con código en un repositorio
Conclusión y más...
Conclusión y más...
Llegamos a uno de los conceptos más importantes de la Programación Orientada a Objetos — y el que más vas a usar en tu día a día como automation tester. Una clase es el molde a partir del cual se crean objetos: define qué datos tiene y qué puede hacer. En esta clase lo vemos en código real.
🔍 La clase en acción
El mejor lugar para entender qué es una clase es mirar una. Este es el ejemplo que vimos en la clase — una page object real para la home de The Free Range Tester:
python
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class TheFreeRangeTesterHomePage:
URL = 'https://www.thefreerangetester.com'
NAVIGATION_BUTTON = (By.XPATH, "//a[@class='mouse']")
POPUP_INICIO = (By.CSS_SELECTOR, 'div.mc-closeModal')
def __init__(self, browser):
self.browser = browser
def load(self):
self.browser.get(self.URL)
def close_popup(self):
popup = self.browser.find_element(*self.POPUP_INICIO)
popup.click()
def enable_navigation(self):
time.sleep(2)
navigation_button = self.browser.find_element(*self.NAVIGATION_BUTTON)
navigation_button.click()Mirá la estructura: la clase TheFreeRangeTesterHomePage tiene atributos — la URL y los locators de los elementos — y tiene métodos — las acciones que se pueden realizar en esa página: cargarla, cerrar el popup, activar la navegación. Todo lo que tiene que ver con esa página vive adentro de esa clase. Nada más, nada menos.
Cuando un test necesite interactuar con la home, va a crear una instancia de esta clase y va a usar sus métodos. No va a saber nada de XPaths ni de CSS selectors — solo va a llamar a load(), close_popup() o enable_navigation(). Eso es exactamente el poder de encapsular comportamiento en una clase.
📚 Para profundizar
Classes — Python Documentation — La documentación oficial de Python sobre clases. Clara, completa y con ejemplos progresivos.
Page Object Model — Selenium Documentation — Cómo Selenium recomienda usar clases para estructurar el código de automation.
🤔 Para reflexionar
¿Por qué creés que conviene tener una clase separada por cada página de la aplicación en lugar de poner todo en un solo archivo?
Si la URL de la home cambiara mañana, ¿en cuántos lugares tendrías que hacer el cambio con esta estructura? ¿Qué pasaría si no usaras una clase?