Pregunta

Hay algunos botones y menús de la aplicación que estoy probando que requieren clics reales para enviar toda la información a través y haciendo clic en el estilo FireEvent no parece que cortarlo. Tanto TestPartner y QTP pueden utilizar clics reales. TestPartner qué siempre (lento) y QTP hace esto cambiando la 'ReplayType' a 2 de 1.

Setting.WebPackage("ReplayType") = 2

Así que mi pregunta es. ¿Hay alguna forma de obtener clics reales en WatiN o selenio? No he sido capaz de encontrar esa opción.

Gracias, Josh

¿Fue útil?

Solución

El selenio puede disparar 2 clics reales en lugar de tratar de sintetizar los clics y las pulsaciones de teclado como el selenio 1 hace. Hace un montón de interacción con el sistema operativo para hacer estas cosas de forma nativa sobre la que proviene una gran parte del Selenio 1 cuestiones como lo es el disparo de un clic o MouseUp o MouseDown?

Selenio 2 se encuentra en su segunda fase alfa y es bastante estable en el momento. Puede obtener 2.0a2 selenio a partir de http://code.google.com/p/selenium / descargas / lista.

He estado trabajando en los enlaces .NET y estoy muy contento con la forma en que se van.

Otros consejos

Cuando ReplayType se establece en , dispositivo (2), QTP en realidad se mueve el ratón y realiza un clic (se puede ver el movimiento del cursor del ratón). No estoy muy familiarizado con selenio, pero por lo que sé de repetición se hace en JavaScript puro, por tanto, que puede disparar eventos DOM (tal como se hace en QTP ReplayMode evento) pero no puedo simular un real haga clic en el QTP manera lo hace.

Con WatiN, es posible llegar a la interfaz "nativo" de elementos en las ventanas de IE. El uso que se puede obtener las coordenadas de pantalla de cualquier elemento.

using mshtml; //Add a reference to Microsoft.mshtml that comes with WatiN.
using WatiN.Core.Native.InternetExplorer;

public static System.Drawing.Point GetScreenPoint(IEElement element)
{
    IHTMLElement nativeElement = element.AsHtmlElement;
    IHTMLElement2 offsetElement = (IHTMLElement2)nativeElement;
    IHTMLRect clientRect = offsetElement.getBoundingClientRect();
    IHTMLDocument2 doc = (IHTMLDocument2)nativeElement.document;
    IHTMLWindow3 window = (IHTMLWindow3)doc.parentWindow;

    int windowLeft = window.screenLeft;
    int windowTop = window.screenTop;
    int elementLeft = clientRect.left;
    int elementTop = clientRect.top;
    int width = nativeElement.offsetWidth;
    int height = nativeElement.offsetHeight;

    int clickX = windowLeft + elementLeft + (width / 2);
    int clickY = windowTop + elementTop + (height / 2);

    return new System.Drawing.Point(clickX, clickY);
}

Para usarlo:

Button myButton = browser.Button(Find.ById("myButton"));
System.Drawing.Point clickPoint = GetScreenPoint((IEElement)myButton.NativeElement);
MyClick(clickPoint);

Es evidente que el elemento tiene que ser visible. No sé cómo comprobar que la ligera, pero creo que se puede cambiar la scrollTop y atributos scrollLeft del cuerpo para desplazarse alrededor.

También se necesita un método para hacer realidad el clic, pero es probable que haya una respuesta para eso ya están en stackoverflow.

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