使用超时
提示
默认情况下,对于在本地运行的测试,UITests 最多等待 15 秒,对于在 App Center 中运行的测试,则等待 1 分钟,然后引发 TimeoutException 。 如果指定其他等待时间,这将替代默认值,并应用于本地& App Center测试。
有时,需要暂停测试执行,等待 UI 在长时间运行的操作期间更新。 UITest 提供了两个 API 来解决这些问题:
IApp.WaitForElementIApp.WaitForNoElement
方法 和 基本相同:它们等待查询得到满足,如果未指定时间限制,则会引发 IApp.WaitForElement IApp.WaitForNoElement TimeoutException 。
IApp.WaitForElement 可用于确认视图是否存在,例如成功消息或图标。 此示例是 的一 IApp.WaitForElement 个示例,它将等待最多 90 秒,以便显示标记为 的 success_message_label 视图:
app.WaitForElement(c=>c.Marked("success_message_label"),
"Didn't see the success message.",
new TimeSpan(0,0,0,90,0));
与视图交互之前, IApp.WaitForElement 建议先调用 。 如果视图不可见或仍处于动画状态,则许多手势 API 将失败。 以下代码片段是一种扩展方法,用于验证视图的可见性,然后尝试输入文本:
public static class UITestHelpers
{
public static void WaitThenEnterText(this IApp app, Func<AppQuery, AppQuery> lambda, string text)
{
app.WaitForElement(lambda);
app.EnterText(lambda, text);
}
}
相反,当某些视图(如进度对话框)仍位于屏幕上时,方法 IApp.WaitForNoElement 可用于暂停测试:
app.WaitForNoElement(c=>c.Class("TextView").Text("Uploading data..."),
"Upload is taking too long",
new TimeSpan(0,0,90,0));