使用Windows Phone上的Coded UI与MessageDialog交互

时间:2016-02-05 19:25:33

标签: c# windows-phone-8 windows-phone coded-ui-tests

我正在为一个简单的应用程序编写一些Coded UI测试,似乎无法获取代码来查找或与MessageDialog框交互。使用“测试”构建器,我能够看到该框及其相关控件,但在测试中,除了应用程序中的元素之外,我无法找到任何内容。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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