coded ui 控制轮询而不是等待控制存在

coded ui control polling instead of wait for control exists

我编写了 ui 测试,其中包含很多 WaitForControlExists。这导致我的测试 运行 变慢。

基本上如果 Playback.PlaybackSettings.SearchTimeout = 30000; 并且我有 uicontrol.WaitForControlExists() 从该方法获得反馈需要 30 秒,即使控件在 1 秒后显示。

现在我想知道是否有一种方法可以在控件存在时立即退出 WaitForControlExist?比如说,我 "Poll the Control Exists" 而不是 "Wait For Control Exists"。

我会将轮询计时器设置为 1 秒。这意味着我每秒检查一次控件是否存在。如果它在 2 秒后显示(或任何少于 30 秒的时间)return true 并停止轮询,如果在 30 秒后不继续尝试每秒,quit 和 return false .

您可以设置如下:

var exists = uiControl.WaitForControlExists(100);
var counter = 0;
while(!exists)
{
   Playback.Wait(1000);
   counter++;
   exists = uiControl.WaitForControlExists(100);
   if(counter>30)
       break;
}

您也可以尝试使用 WaitForControlReady

使用uiControl.WaitForControlCondition(控制=>control.Condition,超时);

有了这个,您可以在继续执行之前混合和匹配您希望满足的控制条件。

对我来说最有用的是控件的状态和样式。 玩得开心:)