internal static bool TryClickOnBoundingRectangleCenter( MouseButton button, WindowAppElement element, bool doubleClick) { if (element == null) { throw new ArgumentNullException("element"); } Point point; if (!AutomationElementHelper.TryGetBoundingRectangleCenter(element.Instance, out point)) { Logger.Debug("Element '{0}' have empty BoundingRectangle", element); return(false); } if (doubleClick) { CruciatusFactory.Mouse.DoubleClick(button, point.X, point.Y); } else { CruciatusFactory.Mouse.Click(button, point.X, point.Y); } Logger.Info( "{0} on '{1}' element at ({2}, {3}) BoundingRectangle center", doubleClick ? "DoubleClick" : "Click", element, point.X, point.Y); return(true); }
internal static bool TryClickOnClickablePoint(MouseButton button, WindowAppElement element, bool doubleClick) { if (element == null) { throw new ArgumentNullException("element"); } var point = element.Properties.ClickablePoint; if (!point.HasValue) { Logger.Debug("Element '{0}' not have ClickablePoint", element); return(false); } var x = point.Value.X; var y = point.Value.Y; if (doubleClick) { CruciatusFactory.Mouse.DoubleClick(button, x, y); } else { CruciatusFactory.Mouse.Click(button, x, y); } Logger.Info( "{0} on '{1}' element at ({2}, {3}) ClickablePoint", doubleClick ? "DoubleClick" : "Click", element, x, y); return(true); }
internal static bool TryClickUsingInvokePattern(WindowAppElement element, bool doubleClick) { if (element == null) { throw new ArgumentNullException("element"); } object basePattern; if (element.Instance.TryGetCurrentPattern(InvokePattern.Pattern, out basePattern)) { string cmd; var invokePattern = (InvokePattern)basePattern; if (doubleClick) { invokePattern.Invoke(); invokePattern.Invoke(); cmd = "DoubleClick"; } else { invokePattern.Invoke(); cmd = "Click"; } Logger.Info("{0} emulation on '{1}' element with use invoke pattern", cmd, element); return(true); } Logger.Debug("Element '{0}' not support InvokePattern", element); return(false); }
internal static IEnumerable <WindowAppElement> FindAll(WindowAppElement parent, By strategy, int timeout) { if (parent == null) { throw new ArgumentNullException("parent"); } var result = strategy.FindAll(parent.Instance, timeout); return(result.Select(e => new WindowAppElement(parent, e, strategy))); }
private void ValuePatternSetValue(WindowAppElement element, IEnumerable <JToken> args) { var value = args.ElementAtOrDefault(1); if (value == null) { var msg = string.Format(HelpArgumentsErrorMsg); throw new AutomationException(msg, ResponseStatus.JavaScriptError); } element.GetPattern <ValuePattern>(ValuePattern.Pattern).SetValue(value.ToString()); }
internal static WindowAppElement FindFirst(WindowAppElement parent, By strategy, int timeout) { var element = strategy.FindFirst(parent.Instance, timeout); if (element == null) { Logger.Info("Element '{0}' not found", strategy); CruciatusFactory.Screenshoter.AutomaticScreenshotCaptureIfNeeded(); return(null); } return(new WindowAppElement(parent, element, strategy)); }
public string RegisterElement(WindowAppElement element) { var registeredKey = this.registeredElements.FirstOrDefault( x => x.Value.Properties.RuntimeId == element.Properties.RuntimeId).Key; if (registeredKey == null) { Interlocked.Increment(ref safeInstanceCount); // TODO: Maybe use RuntimeId how registeredKey? registeredKey = element.GetHashCode() + "-" + safeInstanceCount.ToString(string.Empty, CultureInfo.InvariantCulture); this.registeredElements.Add(registeredKey, element); } return(registeredKey); }
public static TOut GetAutomationPropertyValue <TOut>( this WindowAppElement windowAppElement, AutomationProperty property) { try { return(windowAppElement.Instance.GetPropertyValue <TOut>(property)); } catch (NotSupportedException) { var msg = string.Format("Element '{0}' not support '{1}'", windowAppElement, property.ProgrammaticName); CruciatusFactory.Logger.Error(msg); throw new CruciatusException("GET PROPERTY VALUE FAILED"); } catch (InvalidCastException invalidCastException) { var msg = string.Format("Invalid cast from '{0}' to '{1}'.", invalidCastException.Message, typeof(TOut)); CruciatusFactory.Logger.Error(msg); throw new CruciatusException("GET PROPERTY VALUE FAILED"); } }
internal static bool TryGetTextUsingTextPattern(WindowAppElement element, out string text) { if (element == null) { throw new ArgumentNullException("element"); } object pattern; if (element.Instance.TryGetCurrentPattern(TextPattern.Pattern, out pattern)) { var textPattern = pattern as TextPattern; if (textPattern != null) { text = textPattern.DocumentRange.GetText(-1); Logger.Info("Element '{0}' return text using TextPattern", element); return(true); } } Logger.Debug("Element '{0}' not support TextPattern", element); text = null; return(false); }
internal static bool TryGetTextUsingValuePattern(WindowAppElement element, out string text) { if (element == null) { throw new ArgumentNullException("element"); } object pattern; if (element.Instance.TryGetCurrentPattern(ValuePattern.Pattern, out pattern)) { var valuePattern = pattern as ValuePattern; if (valuePattern != null) { Logger.Info("Element '{0}' return text with use ValuePattern", element); text = valuePattern.Current.Value; return(true); } } Logger.Debug("Element '{0}' not support ValuePattern", element); text = null; return(false); }
public static void ClickWithPressedCtrl(this WindowAppElement element) { ClickWithPressedKeys(element, new List <VirtualKeyCode> { VirtualKeyCode.CONTROL }); }
/// <summary> /// Кликает по заданной кнопке диалогового окна. /// </summary> /// <param name="dialogWindow"> /// Диалоговое окно. /// </param> /// <param name="buttonsType"> /// Тип набора кнопок диалогово окна. /// </param> /// <param name="targetButton"> /// Целевая кнопка. /// </param> public static void ClickButton( WindowAppElement dialogWindow, MessageBoxButton buttonsType, MessageBoxResult targetButton) { if (dialogWindow == null) { throw new ArgumentNullException("dialogWindow"); } var condition = new PropertyCondition(WindowPattern.IsModalProperty, true); var modalwindow = AutomationElementHelper.FindFirst(dialogWindow.Instance, TreeScope.Children, condition); if (modalwindow == null) { throw new CruciatusException("NOT CLICK BUTTON"); } string uid; if (targetButton == MessageBoxResult.None) { uid = CruciatusFactory.Settings.MessageBoxButtonUid.CloseButton; } else { switch (buttonsType) { case MessageBoxButton.OK: switch (targetButton) { case MessageBoxResult.OK: uid = CruciatusFactory.Settings.MessageBoxButtonUid.OkType.Ok; break; default: throw new CruciatusException("NOT CLICK BUTTON"); } break; case MessageBoxButton.OKCancel: switch (targetButton) { case MessageBoxResult.OK: uid = CruciatusFactory.Settings.MessageBoxButtonUid.OkCancelType.Ok; break; case MessageBoxResult.Cancel: uid = CruciatusFactory.Settings.MessageBoxButtonUid.OkCancelType.Cancel; break; default: throw new CruciatusException("NOT CLICK BUTTON"); } break; case MessageBoxButton.YesNo: switch (targetButton) { case MessageBoxResult.Yes: uid = CruciatusFactory.Settings.MessageBoxButtonUid.YesNoType.Yes; break; case MessageBoxResult.No: uid = CruciatusFactory.Settings.MessageBoxButtonUid.YesNoType.No; break; default: throw new CruciatusException("NOT CLICK BUTTON"); } break; case MessageBoxButton.YesNoCancel: switch (targetButton) { case MessageBoxResult.Yes: uid = CruciatusFactory.Settings.MessageBoxButtonUid.YesNoCancelType.Yes; break; case MessageBoxResult.No: uid = CruciatusFactory.Settings.MessageBoxButtonUid.YesNoCancelType.No; break; case MessageBoxResult.Cancel: uid = CruciatusFactory.Settings.MessageBoxButtonUid.YesNoCancelType.Cancel; break; default: throw new CruciatusException("NOT CLICK BUTTON"); } break; default: throw new CruciatusException("NOT CLICK BUTTON"); } } var buttonElement = new WindowAppElement(dialogWindow, modalwindow, null).FindElement(By.Uid(uid)); buttonElement.Click(); }
public static Menu ToMenu(this WindowAppElement element) { return(new Menu(element)); }
public static ListBox ToListBox(this WindowAppElement element) { return(new ListBox(element)); }
public static DataGrid ToDataGrid(this WindowAppElement element) { return(new DataGrid(element)); }
public static ComboBox ToComboBox(this WindowAppElement element) { return(new ComboBox(element)); }
public static CheckBox ToCheckBox(this WindowAppElement element) { return(new CheckBox(element)); }
public static T GetPattern <T>(this WindowAppElement element, AutomationPattern pattern) where T : class { return(element.Instance.GetPattern <T>(pattern)); }
public static void ClickWithPressedKeys(this WindowAppElement element, List <VirtualKeyCode> keys) { keys.ForEach(key => CruciatusFactory.Keyboard.KeyDown(key)); element.Click(); keys.ForEach(key => CruciatusFactory.Keyboard.KeyUp(key)); }
internal static IEnumerable <WindowAppElement> FindAll(WindowAppElement parent, By strategy) { return(FindAll(parent, strategy, CruciatusFactory.Settings.SearchTimeout)); }
internal static WindowAppElement FindFirst(WindowAppElement parent, By strategy) { return(FindFirst(parent, strategy, CruciatusFactory.Settings.SearchTimeout)); }