InvokePattern用于可被调用的控件,如按钮。Used to support controls that do not maintain state when activated but rather initiate or perform a single, unambiguous action, such as a button.
封装如下代码:
public static InvokePattern GetInvokePattern(AutomationElement element)
{
object currentPattern = null;
if (!element.TryGetCurrentPattern(InvokePattern.Pattern, out currentPattern))
{
Log.Error(string.Format("Element with AutomationId '{0}' and Name '{1}' does not support the InvokePattern.",
element.Current.AutomationId, element.Current.Name));
throw new Exception(string.Format("Element with AutomationId '{0}' and Name '{1}' does not support the InvokePattern.",
element.Current.AutomationId, element.Current.Name));
}
return currentPattern as InvokePattern;
}
//Get the button element
AutomationElement button = AutomationElementSearch.FindElementById(window, "button1");
Assert.IsNotNull(button);
Thread.Sleep(1000);
//Click the button
InvokePattern invokepattern = Invokepattern.GetInvokePattern(button);
Assert.IsNotNull(invokepattern);
invokepattern.Invoke();
Thread.Sleep(1000);