有人知道如何在编码用户界面中为测试设置超时?我知道你可以做Playback.PlaybackSettings.SearchTimeout = x
但我的测试是找到控件,会发生什么是它无法访问控件(因为UI的错误,但我不能更改UI因为不是我的项目)。测试循环尝试单击控件并且永不失败,我必须手动取消测试。
我需要我的测试在点击失败后继续运行。 。 。这是因为如果我在单击后将鼠标移出控件,则UI会继续工作。所以我需要单击控件(单击失败),然后移动鼠标并再次单击(这是解决错误的方法)。
所以
- 如何为播放中的特定操作设置超时?
之类的东西Playback.PlaySettings.ActionTimeOut = 1000;
Mouse.Click(control, new Point (3,3));
Playback.PlaySettings.ResetToDefault;
由于
答案 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))。