InformesViewnext/main.py
2025-02-27 19:05:41 +01:00

112 lines
3.8 KiB
Python

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()
#<div id="popup_message" class="span10" style="text-align: center">Red actual establecida correctamente (09-VN-VALLECAS)</div>
#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()