【问题标题】:set text on textfield / textbox with the automation framework and get the change event使用自动化框架在文本字段/文本框上设置文本并获取更改事件
【发布时间】:2012-05-23 12:43:24
【问题描述】:

我想使用 Mircosoft UI Automation 框架在文本字段/文本框元素上设置文本,这意味着在来自 ControlType.EditControlType.DocumentAutomationElement 上。

目前我正在使用TextPattern 从这些AutomationElements 之一获取文本:

TextPattern tp = (TextPattern)element.GetCurrentPattern(TextPattern.Pattern);
string text = tp.DocumentRange.GetText(-1).Trim();

但现在我想在AutomationElement 中设置一个新文本。我在TextPattern 类中找不到此方法。所以我正在尝试使用ValuePattern,但我不确定这是否是正确的做法:

ValuePattern value = element.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
value.SetValue(insertText);

还有其他方法可以设置文本值吗?

另一个问题是,当 Edit / Document 元素上的文本发生更改时,如何获取事件?我尝试使用TextChangedEvent,但更改文本时没有触发任何事件:

AutomationEventHandler ehTextChanged = new AutomationEventHandler(text_event);
Automation.AddAutomationEventHandler(TextPattern.TextChangedEvent, element, TreeScope.Element, ehTextChanged);

private void text_event(object sender, AutomationEventArgs e)
{
    Console.WriteLine("Text changed");
}

【问题讨论】:

    标签: c# events user-interface input ui-automation


    【解决方案1】:

    您可以使用 ValuePatern,它就是这样做的方法。来自我自己的代码:

    ValuePattern etb = EditableTextBox.GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
    etb.SetValue("test");
    

    您可以使用以下方式注册到Event

    var myEventHandler= 
                new AutomationEventHandler(handler);
    
    Automation.AddAutomationEventHandler(
        SelectionItemPattern.ElementSelectedEvent, // In your case you might want to use another pattern
        targetApp, 
        TreeScope.Descendants, 
        myEventHandler);
    

    还有handler 方法:

    private void handler(object src, AutomationEventArgs e) {...}
    

    还有一个有用的AutomationPropertyChangedEventHandler(在这种情况下使用Automation.AddAutomationPropertyChangedEventHandler(...))。

    基于来自 MSDN 的 sample

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 2014-11-08
      相关资源
      最近更新 更多