你什么时候使用UITestControl.Find方法?

时间:2014-05-29 15:48:26

标签: coded-ui-tests

当检查页面/屏幕是否已加载时,我经常使用UITestControl.WaitForControlExist()方法,但我发现示例代码遵循ctl.WaitForControlExist(),并在父控件上调用otherCtl.Find()。像这样:

var tab = UIMainMenuExtWindow.UIItemWindow.UIRibbonClient.UISolutionsTabPage;
tab.WaitForControlExist(3000);
UIMainMenuExtWindow.Find();
UIMainMenuExtWindow.UIItemWindow.Find();
UIMainMenuExtWindow.UIItemWindow.UIRibbonClient.Find();
UIMainMenuExtWindow.UIItemWindow.UIRibbonClient.UISolutionsTabPage.Find();
tab.Find();
Mouse.Click(tab);

这段代码有意义吗? ' Find()'的目的是什么?呼叫?

1 个答案:

答案 0 :(得分:1)

为UI控件设置SearchPropertiesFilterProperties等后,Find方法会导致执行搜索。通常,Find不会被显式调用,但是当在表达式中将UI控件作为另一个控件的父级进行计算时,它会隐式调用它(或者可能是某个等效的内部方法)。

考虑:

this.uimap.uiTopLevel.ActionMethod();

在上面的语句中,必须评估uiTopLevel的值,以找到可以调用ActionMethod的对象。该评估需要Find方法。

当应用程序将其部分显示替换为另一个相同的副本时,可能需要显式调用Find方法。首次评估时,UI控件将获得对控件原始副本的引用。当测试尝试访问第二个版本时,它可能会出现“未找到控件”或“隐藏控件”异常(忘记这些异常的确切术语)。通过重新评估控件,即通过显式调用Find方法,可以找到新版本的控件。