private HashSet <string> GetUsedSelectors(IAbstractTreeRoot viewTree)
        {
            // traverse the tree
            var selectorFinderVisitor = new SeleniumSelectorFinderVisitor();

            selectorFinderVisitor.VisitView((ResolvedTreeRoot)viewTree);
            return(selectorFinderVisitor.GetResult());
        }
        private MasterPageObjectDefinition GetMasterPageObjectDefinition(
            SeleniumGeneratorConfiguration seleniumConfiguration,
            IAbstractTreeRoot masterTree,
            IAbstractDirective masterPageFile,
            HashSet <string> usedSelectors)
        {
            var definition = CreatePageObjectDefinition(seleniumConfiguration, masterTree, usedSelectors);

            return(MapPageObjectDefinition(definition, masterPageFile));
        }
예제 #3
0
 /// <summary>
 /// Resolves the content of the root node.
 /// </summary>
 private void ResolveRootContent(DothtmlRootNode root, IAbstractTreeRoot view, IControlResolverMetadata viewMetadata)
 {
     foreach (var node in root.Content)
     {
         var child = ProcessNode(view, node, viewMetadata, view.DataContextTypeStack);
         if (child != null)
         {
             treeBuilder.AddChildControl(view, child);
         }
     }
 }
        private PageObjectDefinition CreatePageObjectDefinition(
            SeleniumGeneratorConfiguration seleniumConfiguration,
            IAbstractTreeRoot tree,
            HashSet <string> masterUsedUniqueSelectors = null)
        {
            var pageObjectDefinition = GetPageObjectDefinition(seleniumConfiguration, masterUsedUniqueSelectors);

            // traverse the tree
            visitor.PushScope(pageObjectDefinition);
            visitor.VisitView((ResolvedTreeRoot)tree);
            return(visitor.PopScope());
        }
        private List <MasterPageObjectDefinition> ResolveMasterPages(
            DotvvmConfiguration dotvvmConfiguration,
            SeleniumGeneratorConfiguration seleniumConfiguration,
            IAbstractTreeRoot viewTree)
        {
            var pageObjectDefinitions = new List <MasterPageObjectDefinition>();

            CreateMasterPageObjectDefinitions(seleniumConfiguration, viewTree, pageObjectDefinitions);

            foreach (var pageObjectDefinition in pageObjectDefinitions)
            {
                UpdateMarkupFile(pageObjectDefinition, pageObjectDefinition.MasterPageFullPath);
            }

            return(pageObjectDefinitions);
        }
        private void CreateMasterPageObjectDefinitions(SeleniumGeneratorConfiguration seleniumConfiguration,
                                                       IAbstractTreeRoot viewTree,
                                                       ICollection <MasterPageObjectDefinition> pageObjectDefinitions)
        {
            if (IsNestedInMasterPage(viewTree))
            {
                var masterPageFile = viewTree.Directives[ParserConstants.MasterPageDirective].FirstOrDefault();
                if (masterPageFile != null)
                {
                    var masterTree    = ResolveControlTree(masterPageFile.Value);
                    var usedSelectors = GetUsedSelectors(masterTree);

                    var masterPageObjectDefinition = GetMasterPageObjectDefinition(seleniumConfiguration, masterTree, masterPageFile, usedSelectors);

                    pageObjectDefinitions.Add(masterPageObjectDefinition);

                    // recursion
                    CreateMasterPageObjectDefinitions(seleniumConfiguration, masterTree, pageObjectDefinitions);
                }
            }
        }
예제 #7
0
        private static HelperDefinition CreateHelperDefinition(SeleniumGeneratorConfiguration seleniumConfiguration, IAbstractTreeRoot tree)
        {
            // traverse the tree
            var visitor = new SeleniumHelperVisitor();

            visitor.PushScope(new HelperDefinition()
            {
                Name = seleniumConfiguration.HelperName
            });
            visitor.VisitView((ResolvedTreeRoot)tree);
            return(visitor.PopScope());
        }
 private static void GetControlsWithSelectors(IAbstractTreeRoot tree, IResolvedControlTreeVisitor visitor)
 {
     visitor.VisitView((ResolvedTreeRoot)tree);
 }
 private bool IsNestedInMasterPage(IAbstractTreeRoot view)
 {
     return(view.Directives.ContainsKey(ParserConstants.MasterPageDirective));
 }
예제 #10
0
 protected override void ResolveRootContent(DothtmlRootNode root, IAbstractTreeRoot view, IControlResolverMetadata viewMetadata)
 {
     ((ResolvedTreeRoot)view).ResolveContentAction = () => base.ResolveRootContent(root, view, viewMetadata);
 }