Teststack.White拖放问题

时间:2015-06-11 22:40:51

标签: wpf c#-4.0 automated-tests white

我无法将控件拖到另一个控件上。我已经成功地选择了两个控件,但是当我尝试使用时:

Mouse.Instance.Location = dragControl.ClickablePoint;
Mouse.LeftDown();

Mouse.Instance.Location = dropControl.ClickablePoint;
Mouse.LeftUp();

拖动不会发生,鼠标移动。但是控制仍然停留在初始位置。

我也尝试过使用:

Mouse.Instance.DragAndDrop(dragItem, dragItem.ClickablePoint, dropItem, dropItem.ClickablePoint);

仍然没有运气。

我正在做一些实验并且有一点让它发挥作用,但我已经忘记了之前找到可行解决方案的资源(我删除了我的工作代码 - 经验教训)。

任何帮助将不胜感激!

提前致谢!

更新6/15

好的,所以我一直在嘲笑这个。出于某种原因,似乎控件实际上并没有被拖动。鼠标正在移动,但控件没有随之移动。

1 个答案:

答案 0 :(得分:4)

好吧,我不知道为什么White DragAndDrop功能不起作用(或者手动使用leftDown,move,leftUp)。

但我确实找到了解决方案。

基本上我重写了白色拖放功能,每个步骤之间都有延迟。所以看起来如下:

guiObject.Click();
Mouse.LeftDown();

var stepCount = 10;
var stepAmount = (float) (guiObject.ClickablePoint.Y - targetObject.ClickablePoint.Y)/stepCount;

for (var i = 0; i < stepCount; i++)
{
    Mouse.Instance.Location = new Point(Mouse.Instance.Location.X, Mouse.Instance.Location.Y - stepAmount);
    Thread.Sleep(75); // I played around with the values and 75 seems to work without being too slow
}

Mouse.LeftUp();

希望这可以帮助其他可能遇到此问题的人。我不知道为什么我需要强迫延迟,但它确实有效。