播放期间让编码的 UI 测试等待特定事件
在编码的 UI 测试播放中,您可以指示测试等待某些事件发生,如某个窗口出现、进度栏消失等。 为此,可使用下表所列的相应 UITestControl.WaitForControlXXX() 方法。 有关使用 WaitForControlEnabled() 方法等待启用某个控件的编码 UI 测试的示例,请参见演练:创建、编辑和维护编码的 UI 测试。
UITestControl.WaitForControlXXX() 方法
UITestControl.WaitForControlXXX() 方法 |
说明 |
---|---|
等待控件准备好接受鼠标和键盘输入。 该引擎隐式调用此 API,以便所有操作等待该控件在执行任何操作之前做好准备。 但是,在某些复杂方案中,可能必须执行显式调用。 |
|
在向导通过调用服务器对输入执行某些异步验证时,等待控件启用。 例如,您可以使用方法等待向导的“下一步”按钮启用。 有关此方法的示例,请参见演练:创建、编辑和维护编码的 UI 测试。 |
|
等待控件显示在 UI 上。 例如,您希望应用程序执行参数验证后显示一个错误对话框。 验证所需的时间不是固定的。 您可以使用此方法等待错误对话框。 |
|
等待控件从 UI 消失。 例如,可以等待进度栏消失。 |
|
等待控件的指定属性达到给定值。 例如,可以等待状态文本更改为“已完成”。 |
|
等待控件的指定属性达到指定值的相反值。 例如,可以等待编辑框变为不是只读的(即可以编辑)。 |
|
等待指定谓词变回 true。 这可用于给定控件上的复杂等待操作(如 OR 条件)。 例如,您可以等到状态文本变为“成功”或“失败”,如下面的代码所示:
|
|
所有上述方法都是 UITestControl 的实例方法。 此方法是静态方法。 此方法也等待指定谓词变为 true,但它可用于多个控件上的复杂等待操作(如 OR 条件)。 例如,您可以等到状态文本变为“成功”或等到显示错误消息,如下面的代码所示:
|
所有这些方法都有以下行为:
如果等待成功,则这些方法返回 true;如果等待失败,则返回 false。
等待操作的隐式超时由 WaitForReadyTimeout 属性指定。 此属性的默认值为 60000 毫秒(1 分钟)。
这些方法有一个重载,可接受以毫秒为单位的显式超时。 但是,当等待操作导致对控件进行隐式搜索时,或者当应用程序正忙时,实际等待时间可能要长于指定的超时。
上述函数功能强大并且很灵活,几乎可以满足所有应用条件。 但是,如果这些方法不能满足需要并且您需要在代码中对 Wait(Int32) 或 Sleep(Int32) 进行编码,建议使用 Playback.Wait() 而不要使用 Thread.Sleep() API。 原因包括:
可以使用 ThinkTimeMultiplier 属性修改休眠持续时间。 默认情况下,此变量为 1,不过,您可以将其递增或递减,以更改整个代码的等待时间。 例如,如果您专门在较慢的网络或某些其他速度较慢的条件下进行测试,则可以在一个位置(或者甚至在配置文件中)将此变量的值更改为 1.5,以便将所有位置的等待时间都增加 50%。
Playback.Wait() 在 for 循环的一小块代码块中内部调用 Thread.Sleep()(进行上述计算之后),同时检查用户取消\中断操作。 换言之,通过使用 Playback.Wait(),您可以在等待结束之前取消播放,而休眠可能引发异常,也可能不引发异常。
提示
通过编码的 UI 测试编辑器,可方便地修改编码的 UI 测试。 使用编码 UI 测试编辑器,可以查找、查看和编辑测试方法。 也可以在 UI 控件图中编辑 UI 操作及其关联控件。 编码 UI 测试编辑器包括在 Microsoft Visual Studio 2010 功能包 2 中。 若要下载该功能包,您必须拥有带 MSDN 订阅、Microsoft BizSpark 或 MSDN Academic Alliance 的 Visual Studio 2010 旗舰版、Visual Studio 2010 高级专业版或专业测试工具版 2010。 有关更多信息,请参见 使用编码的 UI 测试编辑器编辑编码的 UI 测试和 Microsoft Visual Studio 2010 功能包 2。