2012-10-03 80 views
0

我想用白框架來測試WPF .NET4應用程序。 XAML聲明爲超鏈接WPF白/ UIAutomation超鏈接點擊

<Hyperlink Command="{Binding Path=CmdOpenFile}" Name="hlOpenFile" > 
    <TextBlock Text="Load file.." Name="txtLoadFileLabel" /> 
</Hyperlink> 

CmdOpenFile創建並顯示OpenFileDialog。當我手動測試應用程序時,它按預期工作。 我已經寫了使用白色一個單元測試,得到的對應於該超鏈接的AutomationElement,然後嘗試點擊此鏈接:當我運行這個測試

AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile")); 
Hyperlink openFileLink = new Hyperlink(automationElement, window.ActionListener); 
openFileLink.Click(); 

- 應用程序啓動時,鼠標指針移動到這個超鏈接,這就是全部打開的文件對話框不會出現。這可能是什麼原因以及如何修復?

回答

1

看起來像我已經找到了一些解決方案 - 不知道這是最好的一個,但它的工作原理:

AutomationElement automationElement = someParentUIItem.GetElement(SearchCriteria.ByAutomationId("hlOpenFile")); 
var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern; 
invokePattern.Invoke(); 

PS:

以上解決方案只是讓我感動又進了一步,但然後我遇到了一個阻止程序,在打開的對話框中代碼執行停止。即使它是在單獨的線程中完成的 - 那麼它會停止嘗試查找此對話框,直到手動關閉對話框。 在this的幫助下,我終於找到了問題所在。我正在使用Win7x64,應用程序是爲x86構建的,但測試爲AnyCPU。將測試目標更改爲x86可使測試執行按預期工作。