繁体   English   中英

如何以编程方式“单击”Silverlight HyperlinkBut​​ton(WebAii)

[英]How to Programatically “Click” a Silverlight HyperlinkButton (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()方法,但我必须错过它是如何完成的。

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

linkicareabout.User.Click()

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

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

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

此解决方法在此处详述

基本上,它需要向包含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);
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM