1

我目前正在尝试使用White UI-Automation framework自动化测试用例。
在这样做时,我在拖放时遇到了一些麻烦。我试图从一个按钮拖动到屏幕上的一个点,我根据另外两个点的位置来计算。

发生的情况是单击按钮并且鼠标移动到正确的位置,然后应用程序挂起,直到手动移动或单击鼠标,然后发生下降并继续测试。如果鼠标没有收到任何手动交互,则应用程序继续挂起。

代码如下所示:

var criteria = SearchCriteria.ByText(xText);
var yLocation = window.Get(crite);
var yPoint = yLocation.ClickablePoint;
criteria = SearchCriteria.ByText(yText);
var xPoint = window.Get(crite).ClickablePoint;
var dropPoint = new Point(xPoint.X, yPoint.Y);
criteria = SearchCriteria.ByText(buttonName);
var button = (Button) window.Get(criteria);
Mouse.Instance.DragAndDrop(button, button.ClickablePoint,yLocation,dropPoint);

最后一行之后的任何代码都不会执行。

提前感谢您的帮助。

4

2 回答 2

3

在这里查看:http ://white.codeplex.com/discussions/271672

此页面显示了一种解决方法:

//Point the mouse for drag

Mouse.Instance.Location = draggedItem.ClickablePoint;

Mouse.LeftDown();

//Move the mouse a little down
Mouse.Instance.Location = new Point(draggedItem.ClickablePoint.X, draggedItem.ClickablePoint.Y + 1);

//Move to the new window
targetWindow.Focus();

//Set the point to drop
Mouse.Instance.Location = targetWindow.ClickablePoint;

//Drop
Mouse.LeftUp();
于 2011-10-05T13:47:38.703 回答
0

没有真正的问题要回答,但我可以尝试给你一些(有用的?)反馈。

我不了解 White-UI-Automation 框架,也无法使用您提供的链接找到任何有用的文档。我怀疑 DragAndDrop 在放置完成之前根本不会返回。这类似于 DoDragDrop 在 WPF 中的工作方式。

如果是这种情况,我不会说 DragAndDrop 挂起,而是您的应用程序正在等待放置完成后再继续。

//丹尼尔

于 2011-05-04T08:35:37.623 回答