2009-08-28 7 views
3

J'utilise actuellement le framework d'automatisation WebAii pour écrire des tests d'interface utilisateur sur une application Silverlight 3. Je suis nouveau à Silverlight et je suspecte qu'il me manque quelques informations sur le lien hypertexte. L'application a un lien hypertexte et j'essaye d'écrire le code qui accède à la page, trouve le bouton la page, puis "clique" sur ce bouton (qui naviguera alors au NavigateUri comme indiqué dans les propriétés de l'HyperlinkButton) .Comment faire pour "cliquer" par programme un Silverlight HyperlinkButton (WebAii)

Je n'arrive pas à comprendre comment exécuter ce clic. Le code que j'ai jusqu'ici (simplifié):

Manager.LaunchNewBrowser(BrowserType.InternetExplorer); 
ActiveBrowser.NavigateTo("http://server/appname/"); 
var slApp = ActiveBrowser.SilverlightApps()[0]; 
var menu = slApp.FindName<StackPanel>("LinksStackPanel"); 
var linkicareabout = menu.Find.ByName<HyperlinkButton>("Some Cases"); 

je voudrais attendre à voir une sorte d'action Click(), ou méthode Navigate() que je pourrais invoquer la variable « linkicareabout », mais je dois manquer comment c'est fait.

Répondre

3

Ce que vous cherchez est le utilisateur objet au large de la HyperlinkButton. Tous les contrôles fournis avec WebAii ont cet objet. De cette façon, vous pouvez appeler n'importe quelle action utilisateur sur n'importe quel type de contrôle.

linkicareabout.User.Click()

Le objet utilisateur prend en charge toute action de l'utilisateur que vous pouvez penser et mimer les interactions utilisateur réel. Consultez la documentation here.

2

Je ne pouvais pas le faire moi-même et à la place, je devais écrire mon propre code de navigation. Pour Firefox et IE, vous pouvez simplement utiliser HtmlPage.Window.Navigate pour naviguer vers l'URL souhaitée.

Toutefois, Safari et Chrome nécessitent un travail supplémentaire. J'ai dû utiliser des composants HTML cachés et des interops javascript.

Cette solution de contournement est detailed here. Il s'agit essentiellement d'ajouter une ancre et un bouton cachés à la page HTML contenant votre contrôle Silverlight, puis de modifier l'ancre et de cliquer sur le bouton via les appels au DOM.

HtmlElement anchor = HtmlPage.Document.GetElementById("externalAnchor"); 
HtmlElement button = HtmlPage.Document.GetElementById("externalButton"); 
if ((anchor != null) && (button != null)) 
{ 
    anchor.SetProperty("href", url); 
    button.Invoke("click", null); 
}