selenium - tutorial - Sikuli, prueba de selenio en Jenkins: ¿Permitir que el navegador se inicie en primer plano, como lo es cuando lo ejecuto desde la máquina de desarrollo?
selenium webdriver tutorial español (2)
Así que tienes una máquina de desarrollo donde funciona Sikuli, y una máquina de prueba donde Jenkins ejecuta Sikuli y no funciona.
Tenía la misma configuración (con el comprobador Sikuli / esclavo Jenkins con Windows 7). Lo que funcionó para mí fue hacer que la máquina de pruebas ejecutara un servidor VNC, iniciar sesión como una cuenta de prueba en VNC y ejecutar el esclavo Jenkins como una aplicación normal y no como un servicio. Usé el servidor UltraVNC .
Por lo que pude ver, el problema radica en las medidas de seguridad de Windows, que están diseñadas para evitar que un usuario remoto controle su máquina sin su presencia.
Si ejecuta Jenkins como un servicio, no se le asigna un escritorio real. El script se ejecutará, pero (como está viendo) Sikuli no podrá encontrar nada porque no tiene nada que ver. (Selenium está inspeccionando el contenido de la página mediante programación, por lo que no le importa que la página no se muestre realmente en ninguna pantalla).
También puede simplemente ejecutar Jenkins y dejarse conectado, y omitir el servidor VNC. Sin embargo, quería ejecutar la máquina sin un monitor o teclado y todavía tener control. Si ese también es su objetivo, no puede usar Escritorio remoto, ya que asigna un nuevo escritorio en la conexión y luego lo destruye cuando se desconecta. (Así que Jenkins trabajará cuando estés mirando y fracasará cuando salgas por la noche. ¡Muy frustrante!)
Como beneficio adicional, si lo haces de esta manera, puedes conectarte a través de VNC y ver a Jenkins mientras realiza la prueba.
El problema es que las capacidades de reconocimiento de imágenes de Sikuli solo funcionan cuando el objetivo de las pruebas de Sikuli está en primer plano y tiene pleno acceso al mouse. En su configuración actual, los proyectos de Jenkins nunca son visibles desde el escritorio del nodo esclavo de Windows.
La forma en que mi conjunto actual de pruebas automáticas está configurado en este momento, alrededor de 30 pruebas se escriben usando solo selenio. En las últimas dos pruebas, el selenio inicia un controlador de red (actualmente controlador cromado pero puede ser Firefox o IE) y navega a las páginas correctas y Sikuli lo hace desde allí. Ambos usan los enlaces de lenguaje Java.
Actualmente parece que Sikuli está instalado correctamente, pero cuando se le solicita que haga clic en una lista de regiones de pantalla supuestamente pobladas al hacer coincidir el escritorio con una imagen de destino, inmediatamente arroja un NPE.
¿Cómo puedo cambiar mi configuración de Jenkins en mi esclavo de Windows 7 para permitir que el navegador se inicie en primer plano, como cuando lo ejecuto desde mi máquina de desarrollo de Windows 7?
- hacer la máquina esclava de escritorio remoto para sí mismo.
- ejecuta el bálsamo jenkins como programa en esa sesión cmd / c start java -jar slave.jar -jnlpUrl http .... slave-agent.jnlp -secret ... (encuéntralo en tu maestro jenkins (que se muestra cuando el servicio esclavo es abajo)
- configurarlo todo para ejecutar en el arranque de salve win.