这种异常通常发生在UI自动化测试期间,当测试脚本尝试访问UI元素时,它们可能会在一些情况下重新绘制或隐藏,从而导致引发此异常。解决此问题的一种方法是使用WaitForElementAvailable方法等待该元素可用,直到元素已完全加载为止。以下是C#代码示例:
public static bool WaitForElementAvailable(AutomationElement element, int timeoutInMilliseconds)
{
if (element == null)
{
return false;
}
var startTime = DateTime.UtcNow;
var timeout = TimeSpan.FromMilliseconds(timeoutInMilliseconds);
do
{
try
{
if (element.Current.IsEnabled)
{
return true;
}
}
catch (ElementNotAvailableException)
{
// Ignore and keep waiting
}
Thread.Sleep(500);
} while (DateTime.UtcNow - startTime < timeout);
return false;
}
在测试脚本中使用此方法可以显著减少这种异常的发生。