112 lines
3.8 KiB
Python
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()
|