Mercury Quick Test Pro y máquinas virtuales:Funciona desde una máquina cliente pero no desde otra

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

Pregunta

Tengo una máquina virtual (VMware) con Mercury Quick Test Professional 9.2 instalado.Tengo un script para probar una aplicación, escrito en VB.NET usando la biblioteca Infragistics.

Si accedo a esta máquina virtual usando mi computadora portátil (usando Escritorio remoto), todo funciona bien, el script se completa sin problemas.Mi computadora portátil ejecuta XP, con el tema Windows Classic.

Si accedo a esta máquina virtual usando otra máquina (usando Escritorio remoto), el script comienza bien, pero se detiene a la mitad, sin ningún mensaje de error de QTP, nada.Esta máquina ejecuta XP, con el tema Windows Classic.

Una diferencia entre las dos configuraciones es el tamaño de la pantalla, la computadora portátil es de 1920x1280, la otra máquina de 1280x1024.

El paso donde se detiene el script implica marcar una casilla de verificación dentro de UltraWinGrid.Se muestra la casilla de verificación, que en ambos casos está en la pantalla.

¿Alguien ha tenido este problema antes o tiene alguna idea de por qué el comportamiento es diferente entre las dos máquinas?

Gracias.

¿Fue útil?

Solución

DE ACUERDO.He encontrado el problema.De hecho, el guión estaba fallando silenciosamente porque eso es lo que la persona que escribió el guión le dijo que hiciera.No pudo validar algo que estaba fuera de la pantalla, por lo que el script falló.

El problema era la definición QTP de "fuera de pantalla".Tengo dos pantallas conectadas a mi computadora portátil, la pantalla de la computadora portátil (1920x1200) y otra pantalla (1280x1024).Me conecto a la VM para QTP usando un escritorio remoto y usa la configuración de la pantalla de la computadora portátil.Esto significa que cuando inicio mi script QTP y lo muevo a la otra pantalla, no encaja, por lo que la pantalla ya no está maximizada y el objeto está parcialmente fuera de la pantalla, por lo que no se puede encontrar.

La solución es simple:en el Escritorio remoto, use la pestaña Pantalla y establezca el tamaño de la pantalla en 1280x1024, y QTP no tendrá más problemas.

Voilá.

Otros consejos

Si no está utilizando el modo experto y/o permite que QTP haga la mayor parte del trabajo para crear los objetos de su repositorio, entonces sí, está haciendo referencia a todo por píxeles.

Creo todos los objetos de mi repositorio a mano, veo el código fuente (en el caso de pruebas automatizadas de aplicaciones web) y uso Object Spy para obtener ayuda cuando sea necesario.Me propongo no tener ninguna información de posicionamiento como parte de mi definición de objeto, por la misma razón por la que te encuentras.

Para las partes de mi aplicación web que interactuaban con Windows (abrir un archivo para cargar, etc.), Object Spy fue esencial para la prueba y error necesaria para crear un identificador único para crear el objeto del repositorio.Pero puede hacerse.

Ej1:Diálogo de exploración de archivos
texto = "Elegir archivo"
Nativeclass = #32770 (¿aparentemente algo de Windows VooDoo para un cuadro de diálogo de apertura de archivos?)

Ej2:Cuadro de texto del nombre de archivo en el cuadro de diálogo Examinar:
clase nativa = "Editar"
texto adjunto "Archivo y nombre:" (¿más Windows VooDoo?No me funcionaría sin el "&")

Ej3:Botón Abrir en el cuadro de diálogo:
texto = "&Abrir"
clase de objeto = "Botón"

¡Buena suerte!

Punto de aclaración:Mencionaste que QTP se detiene sin mensaje de error.¿Eso también significa que el archivo de registro de resultados de la prueba tampoco tiene ningún mensaje de error?Si el registro tiene alguna información, puede ser útil para diagnosticar el problema.¿Podrías compartir las líneas de código en el punto donde falla el script?

Además, el escritorio remoto cambiará el tamaño del escritorio en la máquina remota.Aunque los scripts QTP no se basan inherentemente en coordenadas, las declaraciones individuales pueden basarse en coordenadas relativas a un objeto.La resolución podría ser un problema en ese sentido.Por ejemplo, imagina que tienes una línea como Button.Click(5, 150) grabada en una máquina de mayor resolución.Pero si intenta reproducirlo en una máquina de menor resolución y el 150 está fuera de los límites del objeto en la resolución más baja, podría causar un problema.

QTP hace no utilice coordenadas de pantalla excepto como último recurso, si los objetos están identificados como objetos de alto nivel (SwfTable en este caso) debería estar bien, sin embargo, si QTP no reconoce el objeto al que recurre WinObject y coordenadas de la pantalla.

Si está utilizando Infragistics, debe saber que amplían el soporte de QTP con su Ventaja de prueba producto que probablemente resolverá su problema.


Editar: @MatthieuF dicho:

De hecho, utilizamos el complemento Infragistics para QTP y todavía tenemos el problema.

¿Puedes darme un ejemplo de una línea que falla?

Unas pocas cosas:

Debería poder depurar la máquina virtual fácilmente; simplemente espere a que se detenga, vaya a su repositorio de objetos y vea si puede identificar el objeto.Si no, utilice el objeto espía para descubrir qué propiedades son diferentes entre los sistemas operativos.Si hay una diferencia, siempre puede establecer esa propiedad en una expresión regular y hacer que verifique ambas posibilidades.

Suponiendo que ese no es el problema, hemos tenido problemas al usar el escritorio remoto con QTP si la ventana Remota está cerrada o minimizada.Para nosotros, era un problema que el portapapeles no se podía cambiar cuando una ventana RDP no estaba visible, pero podría haber otras sorpresas al usar QTP de esa manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top