编码的ui控制轮询而不是等待控制存在

时间:2017-01-18 09:33:02

标签: c# automated-tests coded-ui-tests

我已经在其中编写了很多WaitForControlExists的ui测试。这导致我的测试运行缓慢。

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

现在我想知道控制存在后是否有办法退出WaitForControlExist?说,我“轮询控制存在”而不是“等待控制存在”。

我将轮询计时器设置为1秒。意思是如果控件存在,我每秒检查一次。如果它在2秒后显示(或者不到30秒),则返回true并停止轮询,如果在30秒内没有继续尝试,则退出并返回false。

2 个答案:

答案 0 :(得分:2)

您可以按照以下方式进行设置:

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

您也可以尝试使用WaitForControlReady

答案 1 :(得分:1)

使用uiControl.WaitForControlCondition(control => control.Condition,timeout);

通过这种方式,您可以在继续执行之前混合并匹配您想要满足的控制条件。

对我来说最有用的是控制状态和风格。 玩得开心:)