From 28985674b9004bd8f7e4bcda9809be0cc2fd5bb4 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 27 Feb 2025 19:05:41 +0100 Subject: [PATCH] . --- main.py | 111 +++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | Bin 0 -> 812 bytes 2 files changed, 111 insertions(+) create mode 100644 main.py create mode 100644 requirements.txt diff --git a/main.py b/main.py new file mode 100644 index 0000000..4f2022d --- /dev/null +++ b/main.py @@ -0,0 +1,111 @@ +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() + + # + + #self.page.get_by_role("listitem").click() + #self.page.get_by_role("button", name="Seleccionar red").click() + #self.page.get_by_role("listitem").click() + + #assert self.page.locator("#id_red_actual_administracion_seleccion_red_chosen").has_text(site_name) + + + + +if __name__ == "__main__": + # Datos de acceso + URL_LOGIN = "https://emios003.energy-minus.es/" + USERNAME = "tecsitel" + PASSWORD = "Ellogoesverd3" + + bot = ViewnextEmios(URL_LOGIN, USERNAME, PASSWORD) + bot.start_browser(headless=False) + bot.login() + + if not bot.is_logged_in(): + print("❌ Error en el login") + bot.close_browser() + + bot.pick_site("[Tecsitel] 06-VN-ORENSE") + print("✅ Login exitoso") + bot.pause() + #bot.close_browser() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..ad6828a70d7a8f00943fe2db67006247e2fc1bb3 GIT binary patch literal 812 zcmZ9K>rTQz5QXQriSOWlQ=ybwO-y(bQ%a#tpcGmn`0(m?c7UqcOfNg)mLA%fQpk5XZ4P;RBr(f#2Sh z