首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在编码的UI中为特定操作设置超时?

如何在编码的UI中为特定操作设置超时?
EN

Stack Overflow用户
提问于 2014-04-24 03:49:37
回答 3查看 1.6K关注 0票数 0

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

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

所以

-How是否为播放中的特定操作设置超时时间?就像这样

代码语言:javascript
复制
Playback.PlaySettings.ActionTimeOut = 1000;
Mouse.Click(control, new Point (3,3));
Playback.PlaySettings.ResetToDefault;

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-04-24 16:14:30

有意思的。在这些情况下,它应该抛出异常。我认为CUIT没有设置操作超时的功能,或者它隐藏在它的一个“不太容易访问”的类中。解决这个特性对我来说似乎是一个太大的麻烦。

我建议实现您使用的变通方法:单击按钮,而不关心结果。因此,只要找到按钮,将焦点设置在它或其顶层窗口上,获得其边界矩形,一个可单击的点,然后在该点上进行鼠标单击(然后在必要时再次移动鼠标)。类似于:

代码语言:javascript
复制
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失败,请尝试

代码语言:javascript
复制
var pointToClick = new Point(br.X + br.Width / 2, br.Y + br.Height / 2);
票数 0
EN

Stack Overflow用户

发布于 2014-05-06 01:54:09

要使测试在失败后继续运行,您可以使用:

代码语言:javascript
复制
Playback.PlaybackSettings.ContinueOnError = true;

并让鼠标单击两次。

另一种解决办法是让鼠标单击按钮,在其旁边的空白区域中单击,然后再次单击该按钮。

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

代码语言:javascript
复制
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
票数 0
EN

Stack Overflow用户

发布于 2014-05-25 19:10:02

您可以检查控件是否已启用或存在等。如果为假,则使用Assert.Fail( -> ),如果为真,则使用Mouse.Click(x,y)单击按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23253904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档