3

我目前正在使用 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");

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

4

2 回答 2

3

您正在寻找的是HyperlinkBut​​ton 之外的User对象。WebAii 附带的所有控件都有该对象。通过这种方式,您可以在任何控件类型上调用任何用户操作。

linkicareabout.User.Click()

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

于 2009-08-29T04:19:38.263 回答
2

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

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

此处详细介绍了此解决方法。

基本上,它需要向包含 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);
 }
于 2009-08-28T18:05:25.237 回答