Date post: | 07-Jul-2015 |
Category: |
Technology |
Upload: | artica-st |
View: | 315 times |
Download: | 3 times |
PandoraFMS Selenium
© Artica Soluciones Tecnológicas 20052013
Índice de contenido1Histórico de cambios..........................................................................................................................32Introducción........................................................................................................................................43Matriz de compatibilidad....................................................................................................................54Documentación que debe entregar el Área que requiere la monitorización.......................................65Módulos del plugin.............................................................................................................................76Selenium.............................................................................................................................................8
6.1.OpenSUSE.................................................................................................................................86.1.1.Requisitos del sistema........................................................................................................86.1.2.Instalación de Selenium.....................................................................................................86.1.3.Ejecución de Selenium.......................................................................................................9
6.2.Windows..................................................................................................................................116.2.1.Requisitos del sistema......................................................................................................116.2.2.Instalación de Selenium...................................................................................................116.2.3.Ejecución de Selenium.....................................................................................................12
7Plugin de Selenium en agente pandora fms......................................................................................157.1.Configuración del Plugin de Selenium....................................................................................15
8Firefox extensión de Selenium para PandoraFMS...........................................................................178.1.Instalación de la extensión de Selenium en Firefox................................................................178.2.Uso de la extensión de Selenium en Firefox............................................................................19
9Anexo: Scripts de monitorización web.............................................................................................229.1.Ejemplos de scripts de monitorización....................................................................................229.2.Lista de comandos de scripts de monitorización.....................................................................23
1 HISTÓRICO DE CAMBIOS
Fecha Autor Cambio Versión
21/01/13 Miguel de Dios
Primera versión del documento v1r1
Page 3
2 INTRODUCCIÓN
Este documento tiene como objetivo la descripción de la monitorización usando la herramienta
Selenium integrada en PandoraFMS.
Para ello disponemos de tres herramientas:
• Selenium (http://seleniumhq.org/) herramienta para hacer simulaciones de navegación web
usando un navegador web estandar.
• Plugin de Selenium de Pandora Agent, un plugin para los agentes de Pandora FMS de Linux
que genera por cada tarea en el fichero especificado, dos módulos uno el resultado de la
tarea y el otro el tiempo que ha tardado en realizar esa tarea en Selenium.
• Selenium IDE for PandoraFMS, una extensión para Firefox para grabar una navegación
como una tarea para el plugin de Selenium de Pandora Agent.
Page 4
3 MATRIZ DE COMPATIBILIDAD
Sistemas donde se ha probado• Selenium Server Standalone 2.28.0• Java 7
Sistemas donde debería funcionar • Selenium Server Standalone 2.x• Java 7.x
Page 5
4 DOCUMENTACIÓN QUE DEBE ENTREGAR EL ÁREA QUE REQUIERE LA MONITORIZACIÓN
La documentación a entregar para la monitorización será una archivo con la sesión capturada por el
grabador de navegación que será la fuente de datos para la ejecución del plugin. La creación de este
archivo se exlica más abajo.
Page 6
5 MÓDULOS DEL PLUGIN
El plugin de Selenium por cada tarea genera 2 módulos:
• generic_proc: con el nombre que lleve la tarea en “task_begin” y sera el resultado de la
simulación de la navegación.
• generic_data: que lleva el conteo de tiempo que tarda en realizar la tarea, si resulta positiva,
si no no lo envía.
Page 7
6 SELENIUM
Selenium como hemos dicho es una herramienta de simulación de navegación web, que la realiza
tomando el control de un navegador y ejecutando paso a paso las tareas. El selenium se ejecuta
como un demonio en segundo plano y realiza la comunicación por el puerto 4444 por lo que puede
estar en una máquina distinta al Pandora Agent encargado del plugin de Selenium.
6.1. OpenSUSE
6.1.1. Requisitos del sistemaLos requisitos del sistema para la instalación en una OpenSUSE 12.2:
• el subsistema gráfico Xorg con capacidad de loguearse gráficamente.
• Maquina virtual Java.
• Acceso al puerto TCP 4444 desde la máquina que tiene el agente que ejecutara el plugin.
• Acceso a navegación web desde esta máquina ha las webs (intranet o internet) que se
pretenden ejecutar tareas de monitorización web.
• Navegador Firefox o Chrome u otro soportado por Selenium (ojo hay que especificarlo en el
plugin de Pandora Agent).
6.1.2. Instalación de Selenium
• Si estas usando OpenSUSE 12.2 por problemas que da la corporación Oracle a las empresasy
organizaciones de software libre, no esta disponible el paquete de Java en los repositorios
oficiales de OpenSUSE pero no obstante lo puedes descargar desde la siguiente URL:
http://www.java.com/es/download/linux_manual.jsp?locale=es&host=www.java.com
Descargando la versión paquetizada en RPM con el link (Linux RPM) si tu OpenSUSE es de
32bits y tienes instalado un sistema de 64bits con el link (Linux x64 RPM).
Y para instalarlo solo es necesario ejecutar con permisos de administrador:
sudo rpm ivh jre7u10linuxi586.rpm
• Y descargar el paquete jar de Selenium desde la web oficial en:
Page 8
http://seleniumhq.org/download/
Que dentro de esta página lo puedes encontrar en la sección con el siguiente nombre:
Selenium Server (formerly the Selenium RC Server)
6.1.3. Ejecución de SeleniumPara ejecutar Selenium tan solo basta tener una sesión gráfica en la maquina abierta (directamente
en la maquina o via VNC) y ejecutar:
java jar seleniumserverstandalone2.28.0.jar
Para testear que funciona Selenium basta con entrar un navegador en la maquina a la URL
http://localhost:4444/wd/hub
Y se tiene que ver algo parecido a la siguiente captura de imagen:
Page 9
Y crear una Session con el navegador que se va usar para la monitorización Web como se muestra
en la captura de pantalla:
Y te tiene que aparecer una sesión en la lista de “Sessions” en esta página, tal como muestra la
siguiente captura de pantalla.
Page 10
Y ademas te habrá ejecutado un navegador (en mi caso un Firefox) en la maquina.
Una vez testeado el Selenium, puedes destruir la sesión ya que el plugin del Agente de Pandora se
encargara de crear la sesiones y ejecutarlas el automaticamente.
6.2. Windows
6.2.1. Requisitos del sistemaLos requisitos del sistema
• Maquina virtual Java.
• Acceso al puerto TCP 4444 desde la máquina que tiene el agente que ejecutara el plugin.
• Acceso a navegación web desde esta máquina ha las webs (intranet o internet) que se
pretenden ejecutar tareas de monitorización web.
• Navegador Firefox o Chrome u otro soportado por Selenium (ojo hay que especificarlo en el
plugin de Pandora Agent).
◦ Para navegadores distintos a Firefox, es necesario instalar los “driver” para cada
navegador.
6.2.2. Instalación de SeleniumLos pasos para instalar Selenium en Microsoft Windows.
• Por problemas de la corporación Microsoft con Oracle, no esta disponible el paquete de Java
en los repositorios oficiales de OpenSUSE pero no obstante lo puedes descargar desde la
siguiente URL:
http://www.java.com
• Y descargar el paquete jar de Selenium desde la web oficial en:
http://seleniumhq.org/download/
Que dentro de esta página lo puedes encontrar en la sección con el siguiente nombre:
Selenium Server (formerly the Selenium RC Server)
• Para ejecutar la monitorización en el navegador Firefox no es necesario nada, salvo tenerlo
instalado en esta máquina.
Page 11
• Para ejecutar la monitorización de navegación web en otros navegadores es necesario
instalar el “driver” por ejemplo para usar el Microsoft Internet Explorer (navegador que no
cumple los estándares web pero es ampliamente usado en entornos de escritorio pero no en
la telefonía de última generación que casi todos son derivados del engine libre Webkit).
http://code.google.com/p/selenium/downloads/list
http://code.google.com/p/selenium/downloads/detail?
name=IEDriverServer_Win32_2.29.0.zip&can=2&q =
Y copiar el ejecutable a IEDriverServer.exe al PATH de ejecución que tenga el windows de la
máquina.
Ademas por un defecto en Microsoft Internet Explorer es necesario deschequear en todos
los perfiles de seguridad (Internet, Local Intranet, Sitios de confianza y Sitios Restringidos)
la opción “Habilitar Modo Protegido” como muestra la captura de pantalla:
6.2.3. Ejecución de SeleniumPara ejecutar Selenium tan solo basta tener una sesión gráfica en la maquina abierta (directamente
Page 12
en la maquina o via VNC) y ejecutar, según la versión de windows te pedirá confirmar los permisos
de ejecución del jar, así como por ejemplo el pasar atraves del firewall de Microsoft Windows:
java jar seleniumserverstandalone2.28.0.jar
Para testear que funciona Selenium basta con entrar un navegador en la maquina a la URL
http://localhost:4444/wd/hub
Y se tiene que ver algo parecido a la siguiente captura de imagen:
Y crear una Session con el navegador que se va usar para la monitorización Web como se muestra
en la captura de pantalla:
Page 13
Y te tiene que aparecer una sesión en la lista de “Sessions” en esta página, tal como muestra la
siguiente captura de pantalla.
Y ademas te habrá ejecutado un navegador (en mi caso un Firefox) en la maquina.
Una vez testeado el Selenium, puedes destruir la sesión ya que el plugin del Agente de
Page 14
Pandora se encargara de crear la sesiones y ejecutarlas el automáticamente.
7 PLUGIN DE SELENIUM EN AGENTE PANDORA FMS
En la maquina que tiene el agente de Pandora FMS debe tener instalado el paquete Enterprise del
Agente. Y por tanto en el directorio:
/usr/share/pandora_agent/plugins
Tendrá que tener el fichero de plugin:
SeleniumPlugin.pl
El plugin de Selenium por cada tarea genera 2 módulos:
• generic_proc: con el nombre que lleve la tarea en “task_begin” y sera el resultado de la
simulación de la navegación.
• generic_data: que lleva el conteo de tiempo que tarda en realizar la tarea, si resulta positiva,
si no no lo envía.
Page 15
7.1. Configuración del Plugin de Selenium
Desde la edición de configuración remota del agente en la consola de Pandora como ves en la
captura de pantalla:
Y añadir la linea parecida a la que esta resaltada por ejemplo:
module_plugin SeleniumPlugin.pl /var/selenium_plugin_example 192.168.70.198 4444 *iexplore
Donde es:
module_plugin SeleniumPlugin.pl <path_script_tareas_monitorización> <ip_selenium>
<puerto_selenium> <navegador>
Donde los parametros son:
• path_script_tareas_monitorización: el path al script de tareas que tiene que tener permiso de
lectura desde el agente de Pandora.
• ip_selenium: la ip de la maquina que esta ejecutando el Selenium
• puerto_selenium: el puerto del servidor de Selenium, normalmente es el 4444.
• navegador: el navegador donde realizar la simulación de navegación, tienes dos opciones
*iexplore (solo windows) y *firefox (ambos, necesario tenerlo instalado en la máquina de
Selenium).
El script de la tarea se puede crear de forma manual con un simple editor de texto o con la
herramienta que explicaremos en posteriores capítulos de este manual, la extensión de Firefox de
Selenium para Pandora FMS. No obstante tendrá un anexo con información para crear desde un
Page 16
editor de texto o editar uno creado por la extensión de Firefox.
8 FIREFOX EXTENSIÓN DE SELENIUM PARA PANDORAFMSLa extensión de Firefox de Selenium te da una herramienta para generar la simulación de
navegación, grabando la navegación que realices.
8.1. Instalación de la extensión de Selenium en Firefox
La extensión, la tendrá en un fichero XPI, es necesario tener un Firefox con una versión igual o
superior a la 4.
Para instalarlo tiene que ir a Menú Herramientas Complementos como se ve en la captura de → →
pantalla.
Page 17
Y en la ventana de módulos en el “Botón de opciones” “Instalar complemento desde archivo...” en→
la ventana de dialogo seleccione el fichero XPI de la extensión.
Page 18
Firefox le mostrara una ventana de confirmación de seguridad con el botón de Instalar desactivado
por un tiempo de unos segundos para que se tome su tiempo en leer el mensaje de advertencia de
esta ventana, como se muestra en la captura de pantalla siguiente. Estas ventanas son comunes
cuando se instala cualquier extensión fuera de la página de extensiones de Firefox oficial.
Después de esto le pedirá que reinicie el Firefox.
Y si ha salido correctamente la instalación estará disponible en el menú:
Page 19
8.2. Uso de la extensión de Selenium en Firefox
La herramienta es bastante fácil, a grandes rasgos es abrir la herramienta, pulsar el botón de grabar,
navegar, darle al stop y guardarlo en un fichero, no obstante vamos a explicarlo con mas detalle.
Para activar la extensión de Selenium es en Menú Herramientas “Selenium IDE for → →
PandoraFMS” y te saldrá una ventana que vemos en la siguiente captura de pantalla. Una ventana
compleja pero que solo se usan tres controles.
Page 20
Los controles que usaras son:
• Botón de grabar: el que de la parte derecha de arriba, cuando esta activo, todas las acciones
de navegación se irán grabando en la ventana.
• Lista de acciones: la que esta en medio de la ventana, esta se ira llenando con las acciones
de navegación que realices, incluso se pueden editar o añadir mas desde aquí.
• Menú Archivo: arriba superior a la izquierda, simplemente hay que darle a “Save test case”
una vez terminada la navegación.
Desde la versión v2r1 del plugin de Pandora Selenium para Firefox, guarda a la vez dos tipos de
ficheros, el primero de ellos es un fichero en formato Pandora para usar con el plugin de agente de
Selenium para Pandora, y el segundo es un fichero en formato selenium para el plugin de firefox. El
segundo fichero se puede usar para ampliar o editar fácilmente desde firefox
Es interesante que la opción de chequear que existe un determinado texto en la web que se esta
probando a monitorizar como por ejemplo, en la navegación web de un formulario que cuando se
finaliza correctamente devuelve un texto como “operación correcta” o en un formulario de
búsqueda que salga un determinado producto en la búsqueda. Y desde el menú contextual una vez
seleccionado un texto tiene esa opción para añadir ese paso al script, como puede ver en la
siguiente captura.
.
Page 21
9 ANEXO: SCRIPTS DE MONITORIZACIÓN WEB
Los scripts de monitorización web son en texto plano y se ejecutan de forma secuencial. Hay que
tener en cuenta que no todos los comandos de la extensión de Firefox estan soportados, pero los
mas comunes de Selenium están, ademas la extensión también no soporta todos los comandos de
monitorización.
9.1. Ejemplos de scripts de monitorización
Todos están generados por la extensión de Firefox:
Chequear que en la Demo de PandoraFMS esta el agente “Summarize Energy Data” en la lista de
agentes y en estado desconocido.
Se puede destacar del código con enfoque educativo las siguientes lineas de comandos:
• Los scripts aunque sean varios en un solo fichero, comienzan con una linea de comando
“task_begin” y “task_end”, ademas “task_begin” tiene de parámetro el nombre del script y de
los dos módulos que va crear (uno de estado o de datos extraídos de la web, otro con el
tiempo en segundo que ha durado la monitorización web), cuando el script es generado por
la extensión de Firefox es la URL completa de la simulación de la navegación.
Page 23
task_begin http://firefly.artica.es/pandora_demo/index.phpopen http://firefly.artica.es/pandora_demo/index.phptype id=nick,demotype id=pass,democlick id=imageLogin1wait_for_page_to_load 5000click css=img.toggleclick link=Vista de agenteswait_for_page_to_load 5000click id=group_idselect id=group_id,label=regexp:\s+Energy Efficiencywait_for_page_to_load 5000click css=option[value="19"]click id=statusclick id=statusselect id=status,label=Desconocidowait_for_page_to_load 5000click id=textsearchtype id=textsearch,Sclick id=submitsrcbuttonwait_for_page_to_load 5000is_text_present Summarize Energy Datatask_end
• Siempre después de “task_begin” viene el comando “open” que contiene como parámetro la
URL completa donde se inicia la navegación.
• Comandos como “type” o “click” o “select” suelen llevar dos parámetros el primero es el
objetivo de la acción (suele ser un id html u otro elemento unequivocamente identifica ese
elemento a nivel de código html) y el segundo separado por una el carácter coma (ojo sin
espacios en blanco) es el valor que se introduce en la caja de texto o se selecciona si es una
lista desplegable.
• También a lo largo de la navegación se va cambiando de una página a otra dentro de un
mismo dominio o no, eso conlleva un tiempo en lo que carga las páginas, por eso es
necesario poner entre medias el comando “wait_for_page_to_load” seguido del parámetro
de milisegundos que esperar antes de devolver que el script se ha ejecutado mal, hay que
tener en cuenta aunque tenga un parámetro de tiempo alto eso no afecta al módulo de
tiempo que tarda en ejecutar la monitorización web, solo es un tiempo de espera de cargar
correctamente la web.
• Normalmente para finalizar tendrá un comando “is_text_present” seguido del texto o
expresión regular que quiere chequear que existe en la web monitorizada. Aunque también
puede no existir este comando porque solo desea chequear que la web es navegable y no se
queda colgada cargando o hay un link roto, o también quiere extraer un texto de la web,
pero que veremos mas adelante en este anexo en la lista de comandos.
9.2. Lista de comandos de scripts de monitorización
Los siguientes comando son los que están soportados por el plugin de Selenium en el agente de
Pandora, recuerdo que algunos no están soportados por la extensión Firefox.
• Comentario: cualquier linea que empieza por el carácter #.
• answer_on_next_prompt: comando que pasa a la ventana de prompt generada por
javascript en la web el texto pasado como primer parámetro.
• attach_file: comando que añade el fichero al control de subir ficheros del formulario
pasado como primer parámetro, el segundo parámetro es la ruta al fichero a subir a la web.
• capture_entire_page_screenshot: guarda en un fichero PNG una captura del navegador en
ese momento, con el primer parámetro se pasa la ruta al fichero a guardar la captura.
• capture_entire_page_screenshot_to_string: guarda una captura del navegador en un
string en BASE64 y formato PNG.
• check: marca el cuadro de confirmación de la web pasado como primer parámetro.
• choose_cancel_on_next_confirmation: en la ventana de confirmación generada por el
javascript de la web, pulsara en el botón cancel.
Page 24
• click: el Selenium hará click en elemento de la web pasado como primer parámetro el
objetivo de hacer click.
• close: el Selenium a esta altura de esa linea del script, cerrara el navegador.
• create_cookie: crea en el navegador una cookie de la web, con el par nombre:valor, donde
el nombre es primer parámetro y el segundo el valor.
• delete_all_visible_cookies: borran del navegador los pares nombre:valor de una cookie de
la web.
• delete_cookie: borra el par nombre:valor de la cookie del navegador.
• double_click: realiza la acción de doble click en el elemento web pasado como primer
parámetro el objetivo de hacer doble click.
• focus: hace foco en el navegador en el elemento web pasado como primer parámetro el
objetivo para hacer foco.
• get_attribute: extrae el valor del atributo del elemento html pasado como primer
parámetro.
• get_body_text: extrae todo el contenido de la página web del navegador como si fuera un
texto. Se le puede pasar como primer parámetro una expresión regular que intentara casar
en vez de devolver todo el contenido de la página.
• get_cookie_by_name: retorna el valor de la cookie pasado como primer parámetro el
nombre de esta.
• get_html_source: retorna el contenido como html de toda la página web del navegador
como si fuera un texto. Se le puede pasar como primer parámetro una expresión regular que
intentara casar en vez de devolver todo el contenido de la página.
• get_location: retorna la URL completa en ese momento del script, del navegador en la
simulación de navegación.
• get_text: retorna el texto de un elemento seleccionado a través del primer parámetro.
• get_table: devuelve el contenido de una tabla seleccionada a través del primer parámetro.
• get_title: devuelve el título de la página que esta el script en el momento en el que se llama
el comando.
• get_value: devuelve el valor de un campo de un formulario seleccionado a través del primer
parámetro.
• go_back: realiza la acción de “ir atrás” del navegador web.
• is_cookie_present: chequea que existe el valor de la cookie pasado por el primer
parámetro.
Page 25
• is_text_present: chequea que existe el texto en la web, pasando una expresión regular como
primer parámetro.
• is_visible: chequea que el elemento esta visible, pasada la localización en el primer
parámetro.
• open: abre la web en Selenium pasada la URL como primer parámetro.
• pause: espera la simulación de Selenium durante el tiempo en milisegundos señalados en el
primer parámetro.
• refresh: realiza una acción de refresco en el navegador en el momento en que Selenium
encuentra esta linea de comando en el script.
• select: selecciona un valor en una lista desplegable, siendo el primer parámetro la
localización de la lista desplegable en la web, y el segundo parámetro es el valor de la lista a
seleccionar.
• select_window: selecciona la ventana flotante elegida por el ID que va en el primer
parámetro.
• set_timeout: pasa un tiempo en milisegundos como primer parámetro a Selenium para que
se complete el script si no se cumple devuelve error de estatus del módulo de la tarea.
• submit: ejecuta el envío de los datos de un formulario seleccionado por el primer
parametro.
• type: hace la escritura en la caja de texto seleccionada por el primer parámetro, y con el
segundo parámetro el texto a rellenar por Selenium.
• type_keys: hace también la escritura en la caja de texto pero tecla a tecla como las
pulsaciones de un usuario real en la navegación, la caja de texto se elige en el primer
parámetro y el segundo las teclas a pulsar expresadas como texto.
• uncheck: realiza un deschequeo en el cuadro de chequeo seleccionado por el primer
parámetro.
• wait_for_page_to_load: Selenium espera tantos milisegundos como sean pasados en el
primer parámetro a que termine la carga de la página.
• wait_for_element_present: espera a que este presente en el navegador el elemento pasada
la localización por el primer parámetro y el segundo parámetro es el tiempo en milisegundos
para esperar y si no se devuelve error en el estatus del módulo del plugin de agente de
Pandora.
• wait_for_text_present: espera a que este en el navegador presente el texto pasado como
una expresión regular en el primer parámetro y el segundo parámetro es el tiempo en
milisegundos a esperar y si no se devuelve error en el estatus del módulo de plugin de
Page 26