鉴于自动化元素如何模拟一个单一的左键点击它(Given an Automation Element

2019-06-23 12:49发布

AutomationElement child = walker.GetFirstChild(el);

使用Windows自动化如何我在模拟器上孩子留下单一的点击?

Answer 1:

尝试:

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

链接:
AutomationElement.GetClickablePoint方法
模拟鼠标输入/移动/ WPF的控制离开,没有真正的使用鼠标

编辑发表评论

看到这个链接:

Mouse.cs
NativeMethods.cs
简介TestApi -第1部分:输入注入的API



Answer 2:

而不是发送鼠标事件,你可以Invoke通过它InvokePattern像这样:

public void InvokeAutomationElement(AutomationElement automationElement)
{
    var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
    invokePattern.Invoke();
}


Answer 3:

如果控制有一个“ClickablePoint”您可以使用此代码

            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);

其中AutoItX3Lib是AutoIt的C#的API



文章来源: Given an Automation Element how do i simulate a single left click on it
标签: c# automation