繁体   English   中英

什么是“隐式搜索”,它是如何工作的?

[英]What exactly is an “implicit search” and how does it work?

在Coded UI中,有一些方法可以在播放期间等待特定事件,例如WaitForControlEnabled()WaitForControlEnabled() 根据这份文件

所有这些方法都有以下行为:

  • 如果等待成功,则方法返回true,如果等待失败,则返回false。
  • WaitForReadyTimeout属性指定等待操作的隐式超时。 此属性的默认值为60000毫秒(一分钟)。
  • 这些方法有一个重载,以毫秒为单位显式超时。 但是,当等待操作导致隐式搜索控件时,或者当应用程序繁忙时,实际等待时间可能超过指定的超时。

我的问题是,究竟什么是“隐式搜索”,是否可以完全禁用它,或者如果它发生的话,它会显示在详细日志中?

我在任何官方消息来源都找不到这方面的解释。 根据我的理解,隐式搜索是当回放引擎无法找到确切的UI控件时执行的搜索。 但是,它与SmartMatch不同,因为即使我禁用了SmartMatch

Playback.PlaybackSettings.SmartMatchOptions = SmartMatchOptions.None;

隐式搜索仍然发生。 我知道这一点,因为我故意为UI控件的搜索属性指定了一个非精确值,但仍然找到了控件。 花了很长时间,当我检查详细日志时,没有提到SmartMatch也没有任何警告。

考虑一下这个表达式this.UIMap.UIOne.UITwo.UIThree 要访问UIThree控制需求UITwo已被发现,并找到它所需要UIOne已被发现。 UIOneUITwo的发现是隐含的发现。

另一种方法是编写语句:

this.UIMap.UIOne.Find();
this.UIMap.UIOne.UITwo.Find();
... this.UIMap.UIOne.UITwo.UIThree ...

问题是:

根据我的理解,隐式搜索是当回放引擎无法找到确切的UI控件时执行的搜索。

这是一个错误的解释。 隐式搜索涉及在具有由点链接的多个属性的表达式中查找更高级别的控件。 当无法找到完全匹配时,可以调用智能匹配。 当使用诸如this.UIMap.UIOne.UITwo.UIThree的表达式时,可能的智能匹配可以用于三个控件中的每一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM