public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { string ctorBulk = GetWaiterBulk(appenderElement.Selector); parentClass.InsertToCtor(ctorBulk); parentClass.AddUsing("OpenQA.Selenium.Support.UI"); }
public static IEnumerable <AutoElementData> GetChildren(string body) { var doc = new HtmlDocument(); HtmlNode.ElementsFlags.Remove("form"); doc.LoadHtml(body); HtmlNode[] nodes = doc.DocumentNode.ChildNodes .Where(node => node.Attributes["class"]?.Value.Contains(Consts.AUTOMATION_ELEMENT_PREFIX) ?? false) .ToArray(); if (nodes.Length == 0) { yield break; } foreach (HtmlNode node in nodes) { AutoElementData data = new AutoElementData { Selector = FindAutoClassFromFullClass(node.Attributes["class"].Value), InnerChildrens = GetChildren(node.InnerHtml).ToList(), AutoAttributes = node.Attributes.Where(att => att.Name.StartsWith("auto-")) .Select(att => att.Name) .ToArray() }; yield return(data); } }
private void RunCustomAttributesAppends(AutoElementData current, IComponentFileCreator parentClassCreator) { current.AutoAttributes .Where(_attributesContainer.ContainsCustomAttribute) .Select(_attributesContainer.GetElementAttribute) .ForEach(att => RunAppender(parentClassCreator, att, current)); }
public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { ElementSelectorData[] elements = appenderElement.InnerChildrens.Select(ConversionsUtils.ConvertToElementSelectorData) .ToArray(); bool ctorContainsDriver; string type; string selector = appenderElement.Selector; if (elements.Length > 0) { var elementAddin = _addinContainer.GetAddin(elements[0].Type); type = elementAddin != null ? elementAddin.Type : elements[0].Name; selector = elements[0].FullSelector; ctorContainsDriver = _addinContainer.GetAddin(type)?.CtorContainsDriver ?? false; } else { type = "string"; ctorContainsDriver = false; } string name = SelectorUtils.TryGetClassOrPropNameFromSelector(appenderElement.Selector, out name) ? name : type + "List"; ListItemAddin addin = new ListItemAddin { Type = type, CtorContainsDriver = ctorContainsDriver }; parentClass.AddProperty(parentClass.PropertyGenerator.CreateProperty(addin, name, selector)); }
private void RunAppender(IComponentFileCreator parentClassCreator, IComponentClassAppender appender, AutoElementData element) { if (parentClassCreator != null) { appender.AppendToClass(parentClassCreator, element); } }
public static ElementSelectorData ConvertToElementSelectorData(AutoElementData data) { return(new ElementSelectorData { FullSelector = data.Selector, Name = SelectorUtils.GetClassOrPropNameFromSelector(data.Selector), Type = SelectorUtils.GetKeyWordFromSelector(data.Selector), AutomationAttributes = data.AutoAttributes }); }
public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement) { ElementSelectorData element = ConversionsUtils.ConvertToElementSelectorData(appenderElement); KeyValuePair <Property, Property> propertyWithPrivateWebElement = parentClass.PropertyGenerator.CreatePropertyWithPrivateWebElement( _addinContainer.GetAddin(element.Type) ?? DefaultAddin.Create(element.Type), element.Name, element.FullSelector); string privateWebElement = propertyWithPrivateWebElement.Key.Name; parentClass.AddProperty(GetProperty(privateWebElement)); }
private IEnumerable <ComponentGeneratorOutput> GenerateAppenderOutputs(AutoElementData current, IComponentFileCreator parentClassCreator, string keyWord, IEnumerable <AutoElementData> filteredChildren) { RunAppender(parentClassCreator, _classAppenderContainer.GetAppender(keyWord), current); return(GenerateClassesForElements(filteredChildren)); }
private IEnumerable <ComponentGeneratorOutput> CreateCsOutput(string selector, AutoElementData current, IComponentFileCreator parentClassCreator = null) { RunCustomAttributesAppends(current, parentClassCreator); if (IsBasicElement(current)) { return(new List <ComponentGeneratorOutput>()); } string keyWord = SelectorUtils.GetKeyWordFromSelector(selector); AutoElementData[] children = current.InnerChildrens as AutoElementData[] ?? current.InnerChildrens.ToArray(); AutoElementData[] filteredChildren = children .Where(elm => !IsAppenderElement(elm)) .ToArray(); if (IsAppenderElement(current)) { return(GenerateAppenderOutputs(current, parentClassCreator, keyWord, filteredChildren)); } return(GenerateFileCreatorOutputs(selector, keyWord, children, filteredChildren)); }
private static bool IsBasicElement(AutoElementData element) { return(!element.InnerChildrens.Any()); }
private bool IsAppenderElement(AutoElementData childData) { string keyWord = SelectorUtils.GetKeyWordFromSelector(childData.Selector); return(_classAppenderContainer.ContainsAppender(keyWord)); }