/// <summary> /// /// </summary> /// <param name="element"></param> /// <param name="autoElement"></param> /// <returns></returns> private bool SetElementProperties(IElement element, AutomationElement autoElement, Dictionary <string, int> mapUnknowCounter) { element.Attributes.DesignedId = autoElement.Current.AutomationId; element.Attributes.DesignedName = autoElement.Current.Name; element.Attributes.AcceleratorKey = autoElement.Current.AcceleratorKey; element.Attributes.AccessKey = autoElement.Current.AccessKey; element.Attributes.ClassName = autoElement.Current.ClassName; element.Attributes.FrameworkId = autoElement.Current.FrameworkId; element.Attributes.HasKeyboardFocus = autoElement.Current.HasKeyboardFocus; element.Attributes.HelpText = autoElement.Current.HelpText; element.Attributes.IsContentElement = autoElement.Current.IsContentElement; element.Attributes.IsControlElement = autoElement.Current.IsControlElement; element.Attributes.IsEnabled = autoElement.Current.IsEnabled; element.Attributes.IsKeyboardFocusable = autoElement.Current.IsKeyboardFocusable; element.Attributes.IsOffscreen = autoElement.Current.IsOffscreen; element.Attributes.IsPassword = autoElement.Current.IsPassword; element.Attributes.IsRequiredForForm = autoElement.Current.IsRequiredForForm; element.Attributes.ItemStatus = autoElement.Current.ItemStatus; element.Attributes.ItemType = autoElement.Current.ItemType; element.Attributes.LocalizedControlType = autoElement.Current.LocalizedControlType; element.Attributes.NativeWindowHandle = autoElement.Current.NativeWindowHandle; element.Attributes.ProcessId = autoElement.Current.ProcessId; element.Id = GUI_Utils.GenerateUUID(); element.Attributes.Name = GetNameElement(element, mapUnknowCounter); //get element's screenshot, store as encoded base64 //ignore path to save image var rectBound = autoElement.Current.BoundingRectangle; element.Attributes.RectBounding = rectBound; string strEncoded = CaptureElement.CaptureScreen(rectBound, null); element.Attributes.ImageCaptureEncoded = strEncoded; return(true); }
private string GetNameElement(IElement element, Dictionary <string, int> mapUnknowCounter) { string elementType = element.Attributes.ElementType; string rawName = ""; if (element.Attributes.DesignedName != null && element.Attributes.DesignedName != "") { if (element.Attributes.DesignedName.Length > MAX_LENGTH_DESIGN_NAME) { // TODO: implement better cut string here rawName = element.Attributes.DesignedName.Substring(0, MAX_LENGTH_DESIGN_NAME); } else { rawName = element.Attributes.DesignedName; } } else if (element.Attributes.DesignedId != null && element.Attributes.DesignedId != "") { rawName = element.Attributes.DesignedId; } else { int counter = 0; mapUnknowCounter.TryGetValue(elementType, out counter); counter++; mapUnknowCounter[elementType] = counter; rawName = "Unknow_" + counter; } return (elementType + " " + GUI_Utils.NormalizeString(rawName)); }
private IElement DoConvert(AutomationElement autoElement, IElement parent, Dictionary <string, int> mapUnknowCounter, bool add2Runtime = true) { IElement re = ConvertElement(autoElement, parent, mapUnknowCounter); if (add2Runtime) { RuntimeInstance.listAutoElement.Add(autoElement); try { RuntimeInstance.mappingUIElement.Add(autoElement, re); } catch (ArgumentException) { logger.Error("An element with Key = " + GUI_Utils.TryAutoElementToString(autoElement) + " already exists."); } } if (re == null) { return(null); } if (parent == null) { re.Attributes.ElementPath = new ElementPath(re.Attributes.Name); } else { re.Attributes.ElementPath = parent.Attributes.ElementPath.AppendWith(re.Attributes.Name); if (parent.Children == null) { parent.Children = new List <IElement>(); } parent.Children.Add(re); } re.Parent = parent; /** * when 2 or more elements have the same name **/ NormalizeChildrenName(re.Children); return(re); }
public void AppendNewElement(IElement element, ElementItemVisual parentVisual) { try { ElementItemVisual newElementVisual = new ElementItemVisual(element); mappingElements.Add(element, newElementVisual); if (parentVisual.Children == null) { parentVisual.Children = new ObservableCollection <ElementItemVisual>(); } parentVisual.Children.Add(newElementVisual); newElementVisual.Parent = parentVisual; if (element.Children != null) { foreach (IElement child in element.Children) { AppendNewElement(child, newElementVisual); } } } catch (ArgumentException) { logger.Error("Element " + GUI_Utils.ElementToString(element) + " already existed"); } }
public void NormalizeStringTest() { string temp = GUI_Utils.NormalizeString("Header:Abc - Type__d"); Assert.AreEqual(temp, "Header_Abc_Type_d"); }