C# 在Windows Phone上使用编码的UI与MessageDialog交互

C# 在Windows Phone上使用编码的UI与MessageDialog交互,c#,windows-phone-8,windows-phone,coded-ui-tests,C#,Windows Phone 8,Windows Phone,Coded Ui Tests,我正在为一个简单的应用程序编写一些编码的UI测试,似乎无法让代码找到MessageDialog对话框或与之交互。使用测试生成器,我可以看到框及其相关控件,但在测试中,我只能在应用程序中找到元素 我认为问题在于,用于搜索的XamlWindow仅限于测试中的应用程序,而弹出窗口存在于此上下文之外。我试图用弹出窗口所在的上下文实例化一个新的XamlWindow,但代码除了硬件按钮的应用程序外,找不到任何窗口 我在其他一些地方看到过,在使用UIMap时可以找到MessageDialog,但我正在手工编写

我正在为一个简单的应用程序编写一些编码的UI测试,似乎无法让代码找到MessageDialog对话框或与之交互。使用测试生成器,我可以看到框及其相关控件,但在测试中,我只能在应用程序中找到元素

我认为问题在于,用于搜索的XamlWindow仅限于测试中的应用程序,而弹出窗口存在于此上下文之外。我试图用弹出窗口所在的上下文实例化一个新的XamlWindow,但代码除了硬件按钮的应用程序外,找不到任何窗口


我在其他一些地方看到过,在使用UIMap时可以找到MessageDialog,但我正在手工编写这些测试,并尽可能避免使用它们。如果有办法在代码中生成UIMap并加载MessageDialog(如果可能的话),我并不反对使用UIMap。

使用自动生成的代码后,我能够找到答案。为了访问MessageDialog,您需要实例化引用弹出窗口的UITestControl。问题的出现是因为此窗口不在正在测试的应用程序的范围内。我能够使用以下方法实例化此窗口的UITestControl对象:

        UITestControl popupWindow = new UITestControl();
        popupWindow.TechnologyName = "UIA";
        popupWindow.SearchProperties[UITestControl.PropertyNames.ControlType] = "Window";
        popupWindow.SearchProperties["FrameworkId"] = "UIX";

UITestControl对象的这一实例化与普通实例化之间的重要区别在于,没有任何内容传递到新对象中。这允许代码附加到测试应用程序范围之外的对象。从这里获取弹出窗口中的任何元素与普通页面上的元素相同,但不是传递testApp XamlWindow对象,而是传递popupWindow对象。

显示的是wpf对话框还是windows系统对话框?你能分享一个屏幕截图,或者触发对话框的代码吗?