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
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.
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 ...
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.
He visto en el soporte de AutomatedQ que una receta recomienda usar msaa y establecer algunas propiedades en los controles. No sé si funciona
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. –
- 1. Cómo hacer la mejor prueba unitaria para una aplicación web
- 2. Transmitir una aplicación de PowerBuilder a .NET
- 3. ¿Cómo hacer una prueba a prueba de su aplicación wpf?
- 4. Powerbuilder WebCam
- 5. Spy ++ para aplicaciones PowerBuilder
- 6. Powerbuilder Dynamic Array Manipulation
- 7. documentación lingüística Powerbuilder
- 8. Error de ventana de datos de Powerbuilder
- 9. Prueba de facturación en la aplicación con cuentas de prueba
- 10. PowerBuilder 11.5 y Version Control
- 11. UI de Aplicación de Negocios Diseño
- 12. Java - Cómo hacer la prueba de Python excepto otra
- 13. ¿Cómo hacer la prueba de unidad para Excepciones?
- 14. Prueba con elementos UI en Android view
- 15. ¿La mejor manera de hacer vibrar un elemento de UI?
- 16. ¿Cómo puedo hacer que mi aplicación tenga un período de prueba de 30 días
- 17. ¿Cómo puedo hacer una solicitud de prueba por tiempo limitado?
- 18. android - acceder a los activos de la aplicación de prueba
- 19. cómo hacer que maven utilice los recursos de prueba
- 20. iPhone + en la compra de la aplicación de prueba
- 21. ¿Cómo puedo hacer que una ventana Acerca de sea la ventana más frontal en una aplicación Cocoa sin UI?
- 22. Guía completa sobre la aplicación de raíles de prueba
- 23. ¿Cómo hacer "ping" desde la aplicación Node.js?
- 24. ¿Cómo hacer una prueba unitaria de las conexiones de IBOutlet?
- 25. Prueba de aplicación web para .Net (registrador de prueba WatiN)
- 26. Arquillian Drone/Graphene/Selenium y UI/Prueba de funcionalidad
- 27. Cómo hacer una prueba unitaria en pyCharm
- 28. Prueba en problemas de compra de la aplicación. IAP iOS
- 29. ¿cómo puedo mejorar la Automatización de UI de iPhone?
- 30. ¿Cómo puedo hacer la prueba unitaria para hashCode()?
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. –