当检查页面/屏幕是否已加载时,我经常使用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()'的目的是什么?呼叫?
答案 0 :(得分:1)
为UI控件设置SearchProperties
和FilterProperties
等后,Find
方法会导致执行搜索。通常,Find
不会被显式调用,但是当在表达式中将UI控件作为另一个控件的父级进行计算时,它会隐式调用它(或者可能是某个等效的内部方法)。
考虑:
this.uimap.uiTopLevel.ActionMethod();
在上面的语句中,必须评估uiTopLevel
的值,以找到可以调用ActionMethod
的对象。该评估需要Find
方法。
当应用程序将其部分显示替换为另一个相同的副本时,可能需要显式调用Find
方法。首次评估时,UI控件将获得对控件原始副本的引用。当测试尝试访问第二个版本时,它可能会出现“未找到控件”或“隐藏控件”异常(忘记这些异常的确切术语)。通过重新评估控件,即通过显式调用Find
方法,可以找到新版本的控件。