我目前正在使用WebAii自动化框架针对Silverlight 3应用程序编写一些用户界面测试。我是Silverlight的新手,并怀疑我遗漏了一些关于HyperlinkButton的信息。
应用程序有一个HyperlinkButton,我正在尝试编写导航到页面的代码,找到页面上的按钮,然后“点击”该按钮(然后将按照HyperlinkButton属性中的指定导航到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()方法,但我必须错过它是如何完成的。
答案 0 :(得分:3)
您要找的是HyperlinkButton下的用户对象。 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);
}