自動化要素のクリック可能なポイントをマウスダウンし、別の要素のクリック可能なポイントをマウスアップする次のコードを作成しました。これにより、ドラッグ アンド ドロップの効果が得られるはずですが、そうはなりません。それは奇妙な方法で動作します。ドラッグするのではなく、アイテムを選択するだけのようです。
public static void Main(String[] args)
{
contactsGrid.getCell("Cell Data").drag();
navTree.getNode("Tree Data").drop();
}
public void drag()
{
element.SetFocus();
ScreenClick.leftDown(element);
}
public void drop()
{
element.SetFocus();
ScreenClick.leftUp(element);
}
public static void leftDown(AutomationElement element)
{
while (!element.Current.IsKeyboardFocusable)
element = TreeWalker.RawViewWalker.GetFirstChild(element);
Point p;
element.TryGetClickablePoint(out p);
leftDown((int)p.X, (int)p.Y);
}
public static void leftUp(AutomationElement element)
{
while (!element.Current.IsKeyboardFocusable)
element = TreeWalker.RawViewWalker.GetFirstChild(element);
Point p;
element.TryGetClickablePoint(out p);
leftUp((int)p.X, (int)p.Y);
}
public static void leftDown(int x, int y)
{
Cursor.Position = new System.Drawing.Point(x, y);
mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
}
public static void leftUp(int x, int y)
{
Cursor.Position = new System.Drawing.Point(x, y);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
}