在编码的ui中,有一种方法可以使用UITestControl.WaitForControlExist(waitTime);
等待控件存在。有没有办法等待控件不存在?
我能想到的最好的方法是创建一个像这样的扩展方法:
public static bool WaitForControlClickable(this UITestControl control, int waitTime = 10000)
{
Point p;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
while (stopwatch.ElapsedMilliseconds < waitTime)
{
if (control.TryGetClickablePoint(out p))
{
return true;
}
Thread.Sleep(500);
}
return control.TryGetClickablePoint(out p);
}
有更好的方法吗?此外,我正在寻找一种相反的方法。
答案 0 :(得分:3)
所以WaitForControlExists实际上做的是调用公共WaitForControlPropertyEqual,如:
return this.WaitForControlPropertyEqual(UITestControl.PropertyNames.Exists, true, timeout);
您的帮助者可以致电:
public bool WaitForControlPropertyNotEqual(string propertyName,
object propertyValue, int millisecondsTimeout)
另外,正如Kek指出的那样,有一个WaitForControlNotExist公共方法。
请注意,它们似乎都使用相同的帮助程序(也是公共的):
public static bool WaitForCondition<T>(T conditionContext, Predicate<T> conditionEvaluator, int millisecondsTimeout)
这个帮助程序基本上在当前线程上执行Thread.Sleep,就像你这样做。
答案 1 :(得分:1)
如果您只想等待一段特定的时间,可以添加到测试中:
Playback.Wait(3000);
以毫秒为单位的时间。
答案 2 :(得分:0)
有一系列WaitForControl...()
方法,包括WaitForControlNotExist()
方法。
这些Wait...
方法的全套方法是:
WaitForControlEnabled()
WaitForControlExist()
WaitForControlNotExist()
WaitForControlPropertyEqual()
WaitForControlPropertyNotEqual()
WaitForControlReady()
还有WaitForCondition()
和WaitForControlCondition()
方法可用于等待更复杂的条件。