2011-04-12 17 views
5

Estoy usando White para automatizar las pruebas BDD de nuestra UI C# WPF.Blanco UIAutomation clic() deja de funcionar en plataforma diferente

Mi primer par de pruebas funcionan bien en mi máquina de desarrollo (con Windows 7). Sin embargo, cuando intento ejecutar el mismo código en el servidor de compilación (máquina virtual que ejecuta Windows Server 2003 R2), no funciona correctamente. En ambos casos, las pruebas se ejecutan desde la línea de comandos y las pruebas utilizan el marco Cuke4Nuke. En el caso del servidor, estoy accediendo al servidor a través de Conexión a Escritorio remoto.

El código es el siguiente:

var application = Application.Launch("whiteApp.exe"); 
var initializeOption = InitializeOption.NoCache; 
var windowCriteria = SearchCriteria.ByText("whiteApp"); 
var window = application.GetWindow(criteria, initializeOption); 
var criteria = SearchCriteria.ByAutomationId("rightButton"); 
var button = (Button) window.Get(criteria); 
button.click(); 

El problema es que los botones de clic evento no se dispara cuando se ejecuta en el servidor. Se puede hacer clic en el botón (usando el mouse) si la interfaz de usuario se deja abierta después de que White haya terminado de ejecutarse. Un punto interesante es que una vez que se ejecuta el método de clic, el botón muestra evidencia de que se ha hecho clic en él, como en la siguiente imagen, en el caso de otros botones, se muestra el efecto de mouse over.

Button before and after click

Respuesta

6

no estoy seguro de si este es su problema o no, pero me he dado cuenta de que White tiene algunos problemas cuando se utiliza por las aplicaciones creadas usando la plataforma AnyCPU y ejecutar en un 64- sistema de bits. Por alguna razón, cada vez que intenta mover el mouse en estas condiciones, automáticamente presiona el mouse hacia la parte inferior de la pantalla en lugar de hacia la ubicación solicitada. Esto significa que un comando de clic omite el botón en el que se le pidió que haga clic.

Si construye la aplicación de automatización como una aplicación x86, Blanco automatiza el mouse correctamente.

+0

Muchas gracias, aunque esto no funcionó. Lo completé en Server 2003 R2 vm como x86 y lo ejecuté en vano. Gracias de cualquier manera. – Klee

+1

Tenía exactamente el mismo problema y el cambio a 32 bits lo resolvió. ¿Estás seguro de que construiste _tests_ (no la aplicación real) para x86? –

+0

Puedo confirmar que la creación de la aplicación de automatización/aplicación de prueba para x86 me sirvió de algo. ¡Gracias! –

0

En mi máquina local Windows 7 x64 hace lo mismo.

No sé si es útil, pero usando el botón. RaiseClickEvent(); parece funcionar bien Supongo que esto plantea el evento sin hacer clic en el botón o smt.

0

Sé que esto es una vieja pregunta, pero me encontré con que el otro día y pensé que mi respuesta podría ser útil a los demás ...

estoy corriendo Proyecto blanca con NUnit en un 64 bits Win7 máquina. Para que funcione, tuve que asegurarme de que las pruebas se ejecutaran en un proceso de 32 bits.

Estaba usando el plugin TestDriven.Net. Tiene una opción para ejecutar cualquier prueba de CPU como de 32 bits o de 64 bits.

+1

Si mira el comentario de mi respuesta, @Klee intentó construir su aplicación de prueba como x86 (una aplicación de 32 bits) y no resolvió el problema. –

0

Como mencionó Harry en su respuesta, forzar la aplicación de automatización (aplicación de prueba) en modo x86 funciona.

Sin embargo, el problema real lo crea White. En las páginas de discusión de White sobre Codeplex, Hachima publicó una modificación del código fuente de White para asegurarse de que funciona tanto en x86 como en x64: http://white.codeplex.com/discussions/228433

Cuestiones relacionadas