Esempio n. 1
0
        public void AppendToClass(IComponentFileCreator parentClass, AutoElementData appenderElement)
        {
            string ctorBulk = GetWaiterBulk(appenderElement.Selector);

            parentClass.InsertToCtor(ctorBulk);
            parentClass.AddUsing("OpenQA.Selenium.Support.UI");
        }
Esempio n. 2
0
        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));
        }