假设如果我想在我的 CODED UI 代码中按 Delete 按钮 9 次,是否有任何快捷方式或者我是否需要在代码中提供 9 次键盘控制?

Suppose if I want to press Delete button 9 times in my CODED UI code, is there any shortcut or do I need to give keyboard control 9 times in code?

假设我想在我的 CODEDUI 代码中按 Delete 按钮 9 次,是否有任何快捷方式或者我需要在代码中提供键盘控制 9 次?

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

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

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

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

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

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

这是一个使用 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 或实验室环境中也没有问题。