如何在Coded UI中为特定操作设置超时?

时间:2014-04-23 19:49:37

标签: c# visual-studio-2012 automated-tests coded-ui-tests

有人知道如何在编码用户界面中为测试设置超时?我知道你可以做Playback.PlaybackSettings.SearchTimeout = x但我的测试是找到控件,会发生什么是它无法访问控件(因为UI的错误,但我不能更改UI因为不是我的项目)。测试循环尝试单击控件并且永不失败,我必须手动取消测试。

我需要我的测试在点击失败后继续运行。 。 。这是因为如果我在单击后将鼠标移出控件,则UI会继续工作。所以我需要单击控件(单击失败),然后移动鼠标并再次单击(这是解决错误的方法)。

所以

- 如何为播放中的特定操作设置超时?

之类的东西
Playback.PlaySettings.ActionTimeOut = 1000;
Mouse.Click(control, new Point (3,3));
Playback.PlaySettings.ResetToDefault;

由于

3 个答案:

答案 0 :(得分:0)

有趣。它应该在这些情况下抛出异常。我认为CUIT没有设置动作超时的功能,或者它隐藏在一个“不太容易访问”的类中。制定这个功能对我来说似乎太麻烦了。

我建议您实施您使用的解决方法:点击按钮,不关心结果。因此,只需找到按钮,将焦点设置在其上或顶层窗口,获取其边界矩形,可点击的点并在该点上单击鼠标(如果有必要,再次移动鼠标)。类似的东西:

control.TopParent.SetFocus();
var point = control.GetClickablePoint();
var br = control.BoundingRectangle;
var pointToClick = new Point(br.X + point.X, br.Y + point.Y);
Mouse.Click(pointToClick);

如果GetClickablePoint失败,请尝试

var pointToClick = new Point(br.X + br.Width / 2, br.Y + br.Height / 2);

答案 1 :(得分:0)

为了在测试失败后继续测试,您可以使用:

Playback.PlaybackSettings.ContinueOnError = true;

并点击鼠标两次。

另一项工作可能是鼠标点击按钮,点击旁边的空白处,然后再次点击按钮。

如果错误与仍在处理的线程有任何关系,您也可以在点击之前使用:

Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;

答案 2 :(得分:0)

如果为false,您可以检查控件是否已启用或存在等等。>使用Assert.Fail(message),如果为true - > gt;单击鼠标按钮(新点(x,y))。