Как программно «нажать» кнопку гиперссылки Silverlight (WebAii) - PullRequest
3 голосов
/ 28 августа 2009

В настоящее время я использую инфраструктуру автоматизации WebAii для написания некоторых тестов пользовательского интерфейса для приложения Silverlight 3. Я новичок в Silverlight и подозреваю, что мне не хватает информации о HyperlinkButton.

В приложении есть HyperlinkButton, и я пытаюсь написать код, который переходит на страницу, находит кнопку на странице, затем «нажимает» эту кнопку (которая затем перейдет к NavigateUri, как указано в свойствах HyperlinkButton).

Я не могу понять, как выполнить этот клик. Код, который я до сих пор (упрощенно):

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 () или метод Navigate (), которые я мог бы вызывать для переменной "linkicareabout", но мне, должно быть, не хватает, как это делается.

Ответы [ 2 ]

3 голосов
/ 29 августа 2009

То, что вы ищете, это Пользователь объект из HyperlinkButton. Все элементы управления, с которыми поставляется WebAii, имеют этот объект. Таким образом, вы можете вызвать любое действие пользователя для любого типа элемента управления.

linkicareabout.User.Click()

Объект Пользователь поддерживает любые действия пользователя, которые вы можете себе представить, и имитирует реальные взаимодействия с пользователем. Ознакомьтесь с документацией здесь .

2 голосов
/ 28 августа 2009

Я не смог сделать это сам и вместо этого должен был написать свой собственный код навигации. Для Firefox и IE вы можете просто использовать HtmlPage.Window.Navigate для перехода к нужному URL.

Однако Safari и Chrome требуют дополнительной работы. Мне пришлось использовать скрытые компоненты HTML и некоторые операции с JavaScript.

Этот обходной путь подробно описан здесь .

По сути, это влечет за собой добавление скрытой привязки и кнопки на страницу HTML, содержащую ваш элемент управления Silverlight, а затем изменение привязки и нажатие кнопки через вызовы 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);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...