假设我想在CODED UI代码中按删除按钮9次,是否有任何快捷方式或我需要在代码中给键盘控制9次?

时间:2015-02-05 05:31:28

标签: coded-ui-tests

假如我想在CODEDUI代码中按删除按钮9次,是否有快捷方式,或者我需要在代码中给键盘控制9次?

2 个答案:

答案 0 :(得分:2)

您可以使用for循环循环点击控件9次:

for(var i = 0;i < 9;i++)
{
    Mouse.Click(UiControl.DeleteButton);
}

您可以将它放在.UiMap文件或测试方法中的方法中。

一些未经提出的建议:如果你想点击删除9次,因为你有9个项目要从表或其他元素中删除9个项目,你可以尝试获取孩子的数量:

var deleteNum = UiControl.Table.GetChildren().Count;
for(var i = 0; i < deleteNum; i++ )
{
    Mouse.Click(UiControl.DeleteButton);
}

这将有所帮助,因为您不会更多地使用控件,并且会确保您的测试方法对应用程序中的更改更加健壮。

答案 1 :(得分:0)

这是使用WinAPI的点击示例 - 因为它比控件识别更快。

public static class AppManager
   {
      private const int MOUSEEVENTF_LEFTDOWN = 0x02;
      private const int MOUSEEVENTF_LEFTUP = 0x04;

[DllImport("user32.dll",
         CharSet = CharSet.Auto,
         CallingConvention = CallingConvention.StdCall)]
      private static extern void mouse_event(long dwFlags,
         long dx,
         long dy,
         long cButtons,
         long dwExtraInfo);

public static void RapidClick(Point pt)
      {
         Cursor.Position = pt;
         mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, pt.X, pt.Y, 0, 0);
      }
}

然后使用RapidClick,我这样做:

var point = new Point(control.Left+1, control.Top + 1);             

            for (int pos = 0; pos < totalClicks; pos++)
            {
                AppManager.RapidClick(point);
            }

这样做的好处是表现速度快。这是因为您对控件执行一次查找以获得初始坐标,之后您可以快速地快速单击它。

这对我来说非常有用,也没有RDC或实验室环境的问题。