编码的UI测试Mouse.StartDragging只运行一次,然后停止工作

时间:2016-12-02 15:35:10

标签: drag-and-drop coded-ui-tests

我有一个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; }
    }
}
}

1 个答案:

答案 0 :(得分:0)

我唯一能想到的是,每次调用方法时都要重新实例化uIItemPane。您可能希望在测试方法中实例化它,然后将其传递给Drag_Item。