2009-11-16 39 views
5

No estoy familiarizado con PowerBuilder pero tengo una tarea para crear la Aplicación de prueba de IU automática para PB. Hemos decidido hacerlo en Python con las bibliotecas pywinauto y iaccesible. El problema es que algunos elementos de la interfaz de usuario (UI) como el registro de listas recientemente añadidas no se pueden acceder desde allí (incluso inspect32 no puede obtenerlo). ¿Alguna idea de cómo llegar a estos elementos y hacerlos comprobables?¿Cómo hacer la aplicación de prueba UI de PowerBuilder?

Respuesta

2

Estoy experimentando con el código de una herramienta para automatizar las GUI basadas en PowerBuilder también. Por lo que puedo ver, su mejor opción sería utilizar la interfaz nativa de PowerBuilder (PBNI) y llamar al código de PowerScript desde su NVO.

Si lo desea, siéntase libre de enviarme un correo electrónico (ver mi perfil para mi dirección de correo electrónico), me gustaría intercambiar ideas sobre cómo hacerlo.

1

No utilicé PowerBuilder por un tiempo, pero supongo que el problema que está tratando de resolver es similar al que estoy intentando abordar para las personas que hacen proyectos con sistemas SCADA como Wonderware Intouch.

El problema con una aplicación de este tipo es que no hay API para obtener o establecer el valor de un control. Entonces un enfoque pywinauto no puede funcionar.

He creado una pequeña herramienta para simular los eventos del usuario y obtener los resultados de una captura de pantalla. Utilizo PIL y pytesser ORM para el análisis de las capturas de pantalla. No es la manera más fácil, pero funciona bien.

La herramienta es de código abierto y es gratuita y se puede descargar desde my website (Lo siento en francés). Solo necesitas una cuenta, pero también es gratis. Solo pregunta.

Si usted puede leer francés, aquí es one article about testing Intouch-based applications

Lo siento por la auto-promoción, pero se enfrenta a un problema similar con ninguna solución por lo que he escrito mi propio. De todos modos, eso es gratis y de código abierto ...

+1

Hola. Nuestra aplicación Python funciona bastante bien además de algunas excpetions.No establecemos directamente el valor de control, sino que le decimos al sistema por ejemplo: "vaya a la siguiente posición x, y escriba algo de texto y haga clic en ingresar" Estamos usando pywinauto e iaccesible para encontrar el control y obtener posiotión, valor, etc. El problema es que hay algunos elementos que pywinauto o iaccesible no puede encontrar. –

1

Si está probando DataWindows (la clase es pbdwxxx, por ejemplo, pbdw110) tendrá que usar una combinación de hacer clic en coordenadas específicas y enviar las teclas Tab para llegar al control usted quiere. Por supuesto, también puede enviar las teclas de flecha arriba y abajo para moverse entre las filas. Lo más fácil es comenzar con un control normal como un SLE y una pestaña en DataWindow. El problema es que DataWindow es esencialmente solo una imagen. No hay control para un campo dado hasta que mueva el foco hacia allí haciendo clic o tabbing. También descubrí que la interfaz iAccessible de DataWindow es un poco extraña. Si le preguntas al DataWindow por el objeto con enfoque, no obtienes la respuesta correcta. Si enumera a través de todos los niños, puede encontrar el que tiene foco. Si puede modificar la fuente, también le aconsejo que establezca AccessibleName para sus controles DataWindow; de lo contrario, probablemente no podrá identificar los controles excepto por posición (con los controles DataWindow me refiero a los que están dentro de DataWindow, no a DataWindow). . Si se trata de una aplicación MDI, también puede resultarle útil ubicar la ventana MicroHelp (clase fnhelpxxx, por ejemplo, fnhelp110, buscar desde la ventana principal de la aplicación) para ayudar a determinar su contexto actual.

Editado para agregar: Sikuli parece muy prometedor para probar PowerBuilder. Funciona al reconocer objetos en la pantalla desde un fragmento guardado de captura de pantalla. Es decir, toma una captura de pantalla de la parte de la pantalla que desea que encuentre.

1

He visto en el soporte de AutomatedQ que una receta recomienda usar msaa y establecer algunas propiedades en los controles. No sé si funciona

+0

La limitación del uso de MSAA para ayudar con las pruebas es que PowerBuilder solo ofrece la información de MSAA que el desarrollador proporciona explícitamente, con algunas excepciones. Tenga en cuenta que estoy hablando de PB clásica aquí, no he hurgado en WinForms. He agregado soporte de MSAA a muchos de los controles PFC en nuestro nivel medio. –

Cuestiones relacionadas