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

            parentClass.InsertToCtor(ctorBulk);
            parentClass.AddUsing("OpenQA.Selenium.Support.UI");
        }
 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));
        }
 public void AddFileCreatorComponent(string key, IComponentFileCreator newComponentFileCreator, bool setAsDefault = false)
 {
     _fileCreators[key] = newComponentFileCreator;
     if (setAsDefault)
     {
         _defaultFileCreator = newComponentFileCreator;
     }
 }
 private void RunAppender(IComponentFileCreator parentClassCreator, IComponentClassAppender appender,
                          AutoElementData element)
 {
     if (parentClassCreator != null)
     {
         appender.AppendToClass(parentClassCreator, element);
     }
 }
        private IEnumerable <ComponentGeneratorOutput> GenerateAppendersOutputs(string keyword, IEnumerable <AutoElementData> elements)
        {
            IComponentFileCreator         parent            = _fileCreatorContainer.GetFileCreator(keyword);
            IEnumerable <AutoElementData> appendersElements = elements
                                                              .Where(IsAppenderElement);

            return(GenerateClassesForElements(appendersElements, parent));
        }
        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 ElementSelectorData TransformFileCreatorToAddinsLike(ElementSelectorData child)
 {
     if (!IsAddinElement(child))
     {
         IComponentFileCreator fileCreator = _fileCreatorContainer.GetFileCreator(child.Type);
         if (fileCreator != null)
         {
             _addinContainer.AddAddin(fileCreator.MakeAddin(child.FullSelector));
             child.Type = child.Name;
         }
     }
     return(child);
 }
        private IEnumerable <ComponentGeneratorOutput> GenerateFileCreatorOutputs(string selector,
                                                                                  AutoElementData[] children, string keyWord)
        {
            ElementSelectorData[] elements = children
                                             .Select(ConversionsUtils.ConvertToElementSelectorData)
                                             .Select(TransformFileCreatorToAddinsLike)
                                             .ToArray();

            IComponentFileCreator parent = _fileCreatorContainer.GetFileCreator(keyWord);
            IEnumerable <ComponentGeneratorOutput> outputs = GenerateClassesForElements(children, parent);

            if (parent != null)
            {
                ComponentGeneratorOutput parentOutput = parent.GenerateComponentClass(selector, elements);
                outputs = outputs.Union(new[] { parentOutput }, new ComponentOutputComparer());
            }
            return(outputs);
        }
        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 IEnumerable <ComponentGeneratorOutput> GenerateClassesForElements(IEnumerable <AutoElementData> children, IComponentFileCreator parent = null)
        {
            IEnumerable <ComponentGeneratorOutput> outputs = new List <ComponentGeneratorOutput>();

            foreach (AutoElementData child in children)
            {
                outputs = outputs.Union(CreateCsOutput(child.Selector, child, parent), new ComponentOutputComparer());
            }

            return(outputs);
        }
 private IEnumerable <ComponentGeneratorOutput> GenerateAppenderOutputs(AutoElementData current,
                                                                        IComponentFileCreator parentClassCreator, string keyWord, IEnumerable <AutoElementData> filteredChildren)
 {
     RunAppender(parentClassCreator, _classAppenderContainer.GetAppender(keyWord), current);
     return(GenerateClassesForElements(filteredChildren));
 }