Given an Automation Element how do i simulate a single left click on it

后端 未结 3 1284
遇见更好的自我
遇见更好的自我 2020-12-16 14:30
AutomationElement child = walker.GetFirstChild(el);

using windows automation How do i simulator a left single click on Child ?

相关标签:
3条回答
  • 2020-12-16 15:14

    Rather than sending mouse events, you can Invoke it through the InvokePattern like so:

    public void InvokeAutomationElement(AutomationElement automationElement)
    {
        var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
        invokePattern.Invoke();
    }
    
    0 讨论(0)
  • 2020-12-16 15:23

    if the control has a "ClickablePoint" you can use this code

                System.Windows.Point p = theButton.GetClickablePoint();
                AutoItX3Lib.AutoItX3Class au3;
                au3 = new AutoItX3Lib.AutoItX3Class();
                au3.AutoItSetOption("MouseCoordMode", 0);
                au3.MouseClick("LEFT", (int)p.X, (int)p.Y, 1, -1);
    

    where AutoItX3Lib is the C# API for AutoIt

    0 讨论(0)
  • 2020-12-16 15:30

    try with:

    AutomationElement child = walker.GetFirstChild(el);
    System.Windows.Point p = child.GetClickablePoint();
    Mouse.Move((int)p.X, (int)p.Y);
    Mouse.Click(MouseButton.Left);
    

    Links:
    AutomationElement.GetClickablePoint Method
    Simulate mouse Enter/Move/Leave on WPF control without real mouse usage

    Edit for comment

    See this links:

    Mouse.cs
    NativeMethods.cs
    Introduction to TestApi – Part 1: Input Injection APIs

    0 讨论(0)
提交回复
热议问题