from playwright.sync_api import sync_playwright # Datos de acceso URL_LOGIN = "https://emios003.energy-minus.es/" USERNAME = "tecsitel" PASSWORD = "Ellogoesverd3" class ViewnextEmios: def __init__(self, url: str, username: str, password: str): self.url = url self.username = username self.password = password self.browser = None self.page = None def pause(self): self.page.pause() def start_browser(self, headless: bool = False): """Inicializa el navegador y abre una nueva página.""" playwright = sync_playwright().start() self.browser = playwright.chromium.launch(headless=headless) self.page = self.browser.new_page() def login(self): """Realiza el proceso de login en la página web.""" self.page.goto(self.url) self.page.fill("#usuario", self.username) self.page.fill("#contrasenya", self.password) self.page.click("#boton-login") self.page.wait_for_selector("#menu-modulos") # Ajustar según el selector correcto def is_logged_in(self) -> bool: """Verifica si el login fue exitoso.""" texto_usuario = self.page.inner_text("#contenedor #banner #descripcion-usuario") return "TECSITEL (Ninguna)" in texto_usuario def close_browser(self): """Cierra el navegador.""" if self.browser: self.browser.close() def pick_site(self, site_name: str) -> bool: """Selecciona sede""" self.page.locator("#menu-modulos .menu-modulos-opcion-modulo a").click() # Enlace 'Administración' # Muestra el selector oculto por ChosenJS self.page.evaluate(""" (selector) => { $(selector).attr('style', 'display: inline') } """, "select#id_red_actual_administracion_seleccion_red") self.page.select_option("#id_red_actual_administracion_seleccion_red", label=site_name) #self.page.evaluate(""" # (selector, value) => { # $(selector).chosen(); # $(selector).val(value).change(); # $(selector).trigger("chosen:updated"); # } #""", "#seleccion-red", site_name) #self.page.click("#seleccion-red .chosen-single") #self.page.fill('#seleccion-red .chosen-search input', site_name) #self.page.click("//li[contains(text(), 'Texto a buscar')]") #self.page.wait_for_timeout(5000) #assert self.page.locator("#id_red_actual_administracion_seleccion_red_chosen .chosen-single span", has_text=site_name) self.page.locator("#boton_administracion_seleccionar_red_actual").click() # Botón selección de red #self.page.wait_for_timeout(1000) message = self.page.locator("#popup_message").inner_text() assert "Red actual establecida correctamente" in message self.page.locator("#popup_panel .btn").click() #