如何以编程方式“单击”Silverlight超链接按钮(WebAii)

时间:2009-08-28 17:24:26

标签: silverlight hyperlink silverlight-3.0 webaii

我目前正在使用WebAii自动化框架针对Silverlight 3应用程序编写一些用户界面测试。我是Silverlight的新手,并怀疑我遗漏了一些关于HyperlinkBut​​ton的信息。

应用程序有一个HyperlinkBut​​ton,我正在尝试编写导航到页面的代码,找到页面上的按钮,然后“点击”该按钮(然后将按照HyperlinkBut​​ton属性中的指定导航到NavigateUri)。

我无法弄清楚如何执行该点击。我到目前为止的代码(简化):

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

我希望看到某种Click()动作,或者我可以在“linkicareabout”变量上调用的Navigate()方法,但我必须错过它是如何完成的。

2 个答案:

答案 0 :(得分:3)

您要找的是HyperlinkBut​​ton下的用户对象。 WebAii附带的所有控件都具有该对象。这样,您可以在任何控件类型上调用任何用户操作。

linkicareabout.User.Click()

用户对象支持您可以想到的任何用户操作并模仿真实的用户交互。查看文档here

答案 1 :(得分:2)

我自己无法做到这一点,而是必须编写自己的导航代码。对于Firefox和IE,您只需使用HtmlPage.Window.Navigate导航到所需的URL。

但是,Safari和Chrome需要一些额外的工作。我不得不使用隐藏的HTML组件和一些javascript interops。

此解决方法是detailed here

基本上,它需要向包含Silverlight控件的HTML页面添加隐藏的锚点和按钮,然后通过调用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);
 }