Est-ce que Selenium ou Watin ont la propriété comme le Setting.WebPackage QTP ( « ReplayType ») = 2?

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

Question

Il y a quelques boutons et menus de l'application que je teste qui nécessitent des clics réels pour envoyer toutes les informations à travers et en cliquant style FireEvent ne semble pas le couper. Les deux TestPartner et QTP peuvent utiliser des clics réels. TestPartner est-ce toujours (lent) et QTP fait cela en changeant le « ReplayType » à 2 de 1.

Setting.WebPackage("ReplayType") = 2

Alors ma question est. Y at-il de toute façon à obtenir des clics réels Watin ou Sélénium? Je n'ai pas pu trouver cette option.

Merci, Josh

Était-ce utile?

La solution

Selenium 2 peut tirer de véritables clics au lieu d'essayer de synthétiser les clics et les frappes comme Sélénium 1 fait. Il fait beaucoup d'interaction avec le système d'exploitation pour faire ces choses nativement sur ce qui vient beaucoup de Sélénium 1 est des questions comme il tire un clic ou mouseup ou mousedown?

Selenium 2 est dans sa deuxième phase alpha et est très stable à l'heure actuelle. Vous pouvez obtenir Sélénium 2.0a2 de http://code.google.com/p/selenium / téléchargements / liste .

Je travaille sur les liaisons .NET et je suis vraiment heureux avec la façon dont ils vont.

Autres conseils

Lorsque ReplayType est réglé sur l'appareil (2), QTP déplace effectivement la souris et effectue un clic (vous pouvez voir le déplacement du curseur de la souris). Je ne suis pas très familier avec Sélénium, mais de ce que je sais rejeu est fait en JavaScript pur donc il peut déclencher des événements DOM (comme le fait dans QTP ReplayMode événement), mais il ne peut pas simuler un real cliquez sur le fait manière QTP.

Avec Watin, il est possible d'arriver à l'interface « natif » des éléments dans les fenêtres IE. L'utilisation que vous pouvez obtenir les coordonnées de l'écran de tout élément.

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);
}

Pour l'utiliser:

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

Il est évident que l'élément doit être visible. Je ne sais pas comment vérifier que désinvolture, mais je pense que vous pouvez modifier les attributs scrollTop et scrollLeft du corps pour faire défiler.

Vous aurez également besoin d'une méthode pour faire réellement le clic, mais il y a probablement une réponse déjà sur stackoverflow.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top