假设如果我想在我的 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 或实验室环境中也没有问题。
假设我想在我的 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 或实验室环境中也没有问题。