2012-10-03 4 views
0

WPF .NET4 응용 프로그램을 테스트하기 위해 화이트 프레임 워크를 사용하려고합니다. CmdOpenFile OpenFileDialog를 생성하고 표시 WPF White/UIAutomation 하이퍼 링크 클릭

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

XAML로 하이퍼 링크가 선언되었다. 응용 프로그램을 수동으로 테스트 할 때 예상대로 작동합니다. 나는이 하이퍼 링크에 대응하는 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으로 변경하면 테스트 실행이 예상대로 작동합니다.