我有一个Coded UI测试,我已将其移至UIMap.cs(以便我可以编辑代码),我的代码是......
public void Drag_Item(Point from, Point to)
{
#region Variable Declarations
WpfPane uIItemPane = this.UIOMyWindow.UIDesignSurfaceCustom.UIItemTabList.UIControlTabPage.UIControlText.UIItemPane;
#endregion
Mouse.StartDragging(uIItemPane, from);
Mouse.StopDragging(uIItemPane, to);
}
我在测试中称这种方法......
[TestMethod()]
public void Drag_3_Items()
{
Positions positions = new Positions();
Point start = positions.adaptorsAlert;
this.UIMap.Drag_Item(start, positions.pos1);
this.UIMap.Drag_Item(start, positions.pos2);
this.UIMap.Drag_Item(start, positions.pos3);
this.UIMap.Close_AdaptorsWindowOnDesignGrid();
}
我的问题是第一次调用Drag_Item有效但第二次调用和第三次调用没有。第一次拖动工作后,光标返回到我的窗口图标,这是正确的,然后无限期等待。如果我摆动鼠标它会突然起作用。当我的测试自行运行时,我显然不会在那里摆动鼠标,所以我该如何解决这个问题呢?我尝试了很多东西,包括添加各种Thread.Sleep行,Mouse.Hover和Mouse.Move。除了用我的手移动我的鼠标之外没什么可行的。其他人在各种论坛上都发布了同样的问题而没有好的答案。
有关信息,我的职位课程是......
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyCodedUITesting
{
//[Serializable]
public class Positions
{
public Point pos1 = new Point(40, -500);
public Point Pos1
{
get { return pos1 ; }
set { this.pos1 = value; }
}
public Point pos2 = new Point(440, -500);
public Point Pos2
{
get { return pos2 ; }
set { this.pos2 = value; }
}
public Point pos3 = new Point(840, -500);
public Point Pos3
{
get { return pos3 ; }
set { this.pos3 = value; }
}
}
}
答案 0 :(得分:0)
我唯一能想到的是,每次调用方法时都要重新实例化uIItemPane。您可能希望在测试方法中实例化它,然后将其传递给Drag_Item。