Подтвердить что ты не робот

Учитывая элемент автоматизации, как я могу имитировать один левый клик на нем

AutomationElement child = walker.GetFirstChild(el);

с помощью автоматизации Windows. Как я могу симулировать одиночный щелчок левой кнопкой мыши на Child?

4b9b3361

Ответ 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 ввода-вывода

Ответ 2

Вместо отправки событий мыши вы можете Invoke через InvokePattern сделать так:

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

Ответ 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 - это API С# для AutoIt