Пример #1
0
        private void TreeNodesFromAutomationElements(List <AutomationElement> elementsLine)
        {
            TreeNodeCollection currentNodes = this.objectTree.Nodes;
            TreeNode           tempNode     = null;

            int index = 0;

            foreach (AutomationElement element in elementsLine)
            {
                string controlType = element.Current.ControlType.ControlTypeToString();

                ElementProperties elementProperties = new ElementProperties(element);

                string displayName = controlType + ": " + elementProperties.DerivedName;
                tempNode     = currentNodes.Add(index.ToString(), displayName);
                tempNode.Tag = elementProperties;
                TreeNodeHelper.FixTreeNodeImage(tempNode, controlType);

                currentNodes = tempNode.Nodes;

                if (!string.IsNullOrEmpty(element.Current.Name))
                {
                    tempNode.Checked = true;
                }
            }

            TreeNode currentNode = tempNode;

            currentNode.Name        = "self";
            currentNode.Checked     = true;
            objectTree.SelectedNode = currentNode;

            _selfElement = (ElementProperties)currentNode.Tag;
        }
Пример #2
0
        private void TreeNodesFromAutomationElements(List <RemoteWebElement> webElements)
        {
            TreeNodeCollection currentNodes = this.objectTree.Nodes;
            TreeNode           tempNode     = null;

            int index = 0;

            foreach (RemoteWebElement webelement in webElements)
            {
                WebElementProperties webElementProperties = new WebElementProperties(webelement);
                if (string.IsNullOrEmpty(webElementProperties.ControlTypeString))
                {
                    continue;
                }
                tempNode     = currentNodes.Add(index.ToString(), webElementProperties.Name);
                tempNode.Tag = webElementProperties;
                TreeNodeHelper.FixTreeNodeImage(tempNode, "Button");
                currentNodes     = tempNode.Nodes;
                tempNode.Checked = true;
            }

            TreeNode currentNode = tempNode;

            currentNode.Name        = "self";
            currentNode.Checked     = true;
            objectTree.SelectedNode = currentNode;

            // _selfElement = (ElementProperties)currentNode.Tag;
        }
Пример #3
0
        private void TreeNodesFromWebElementProperties(List <WebElementProperties> webElementPropertiesList)
        {
            if (null == webElementPropertiesList || 0 == webElementPropertiesList.Count)
            {
                return;
            }
            TreeNodeCollection currentNodes = this.objectTree.Nodes;
            TreeNode           tempNode     = null;

            int index = 0;

            foreach (WebElementProperties webElementProperties in webElementPropertiesList)
            {
                tempNode     = currentNodes.Add(index.ToString(), webElementProperties.Name);
                tempNode.Tag = webElementProperties;
                TreeNodeHelper.FixTreeNodeImage(tempNode, "Custom");
                currentNodes     = tempNode.Nodes;
                tempNode.Checked = true;
            }

            TreeNode currentNode = tempNode;

            currentNode.Name        = "self";
            currentNode.Checked     = true;
            objectTree.SelectedNode = currentNode;
        }
Пример #4
0
        public void TreeNodeHelper_FixTreeImage()
        {
            TreeNode node = new TreeNode();

            TreeNodeHelper.FixTreeNodeImage(node, "Window");
            Assert.AreEqual(0, node.ImageIndex);

            TreeNodeHelper.FixTreeNodeImage(node, "ScrollBar");
            Assert.AreEqual(14, node.ImageIndex);

            TreeNodeHelper.FixTreeNodeImage(node, "SomethingElse");
            Assert.AreEqual((int)TreeNodeHelper.TreeNodeImage.Custom, node.ImageIndex);
        }
Пример #5
0
        /// <summary>
        /// generate tree nodes hierarchy from the TestObjects hierarchy
        /// </summary>
        /// <param name="testObjects"></param>
        /// <param name="parentNurse"></param>
        private static void TestObjectToTreeNode(IEnumerable <ITestObject> testObjects, TestObjectNurse parentNurse)
        {
            if (testObjects == null)
            {
                return;
            }

            foreach (ITestObject to in testObjects)
            {
                TestObjectNurse nurse    = (TestObjectNurse)parentNurse.AddChild(to);
                TreeNode        treeNode = nurse.TreeNode;
                treeNode.Expand();

                TreeNodeHelper.FixTreeNodeImage(treeNode, nurse.ControlTypeString);

                TestObjectToTreeNode(to.Children, nurse);
            }
        }
Пример #6
0
        public void TreeNodeHelper_MergeVirtualControlsToTree_TheSame()
        {
            TreeView treeView = new TreeView();

            UIATestObject   parentTestObject = new UIATestObject();
            TestObjectNurse parentNurse      = new TestObjectNurse(parentTestObject);

            parentNurse.AddChild(new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)));
            parentNurse.AddChild(new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74)));

            Assert.AreEqual(2, parentNurse.Children.Count);

            VirtualTestObject[] controls = new VirtualTestObject[]
            {
                new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)),
                new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74))
            };     // in total 6 controls.
            bool ret = TreeNodeHelper.MergeVirtualControlsToTree(controls, parentNurse.TreeNode);

            Assert.IsFalse(ret);
        }
Пример #7
0
        internal void EditVirtualControl(TestObjectNurse nurseObject)
        {
            if (nurseObject.ControlTypeString == NodeType.VirtualControl)
            {
                nurseObject = nurseObject.ParentNurse;

                Debug.Assert(nurseObject.TestObject is UIATestObject);
            }

            if (nurseObject.ImageFile == null)
            {
                //"Please capture the screen shot of the control before editing virtual controls"
                MessageBox.Show(StringResources.LPSpy_SpyMainWindow_CaptureSnapshotFirst);
                return;
            }

            string imagePath = AppEnvironment.GetModelResourceFilePath(nurseObject.ImageFile);

            VirtualTestObject[] virtualControls = VirtualControlHelper.GetVirtualControls(nurseObject.TestObject);

            System.Drawing.Image controlImage = System.Drawing.Image.FromFile(imagePath);

            UIATestObject testObject = (UIATestObject)nurseObject.TestObject;

            bool changed = VirtualControlHelper.EditVirtualControls(testObject, controlImage, ref virtualControls);

            if (changed)
            {
                VirtualTestObject[] updatedControls = virtualControls;

                bool different = TreeNodeHelper.MergeVirtualControlsToTree(updatedControls, nurseObject.TreeNode);

                nurseObject.TreeNode.Expand();

                if (different)
                {
                    AppEnvironment.SetModelChanged(true);
                }
            }
        }
Пример #8
0
        private bool MergeObjectsToMainTree(TestObjectNurse repoNurseNode, IEnumerable <ITestObject> testObjectNodes) //addCollection
        {
            bool found;
            bool changed = false;
            bool web     = false;

            foreach (TestObjectNurse testObjectNurse in testObjectNodes)
            {
                found = false;
                ITestObject testobject = testObjectNurse.TestObject;
                web = testobject.ControlTypeString.StartsWith("Web");

                //if ( null == (repoNurseNode.TestObject as UIATestObject ))
                //{

                //    TestObjectNurse newTestNurse = new TestObjectNurse(testObjectNurse.TestObject);

                //    newTestNurse.NodeName = testObjectNurse.TestObject.NodeName;

                //    repoNurseNode.AddChild(newTestNurse);

                //    TreeNode node = newTestNurse.TreeNode;

                //    changed = true;

                //    TreeNodeHelper.FixTreeNodeImage(node, "Button");

                //    MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                //   // NeighbourChecker(newTestNurse, testObjectNurse);

                //    RaiseMergeCompleteEvent(true);
                //    continue;
                //}
                ////UIACondition fromNodeCondition = (UIACondition)fromNode.Tag;
                TestObjectNurse repoNode = FindMatchingNode(repoNurseNode, testObjectNurse);

                if (repoNode != null)
                {
                    changed |= MergeObjectsToMainTree(repoNode, testObjectNurse.Children);
                    changed |= NeighbourChecker(repoNode, testObjectNurse);
                    repoNode.TreeNode.Expand();
                    found = true;
                }



                if (!found)
                {
                    TestObjectNurse newTestNurse = new TestObjectNurse(testObjectNurse.TestObject);
                    TreeNode        node         = newTestNurse.TreeNode;
                    if (web)
                    {
                        newTestNurse.NodeName = testObjectNurse.TestObject.NodeName;

                        repoNurseNode.AddChild(newTestNurse);

                        changed = true;

                        TreeNodeHelper.FixTreeNodeImage(node, testObjectNurse.TestObject.ControlTypeString);

                        MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                        // NeighbourChecker(newTestNurse, testObjectNurse);

                        RaiseMergeCompleteEvent(true);
                        continue;
                    }
                    UIATestObject     uiaTestObject = (UIATestObject)testObjectNurse.TestObject;
                    AutomationElement addedElement  = uiaTestObject.AutomationElement;

                    string nodeName;

                    // if Element not exist, use the default condition, if exist, create new condition, because this can create index for object.
                    bool elementExist = (!addedElement.Current.BoundingRectangle.IsEmpty);
                    if (!elementExist)
                    {
                        string tempNewName;

                        if (!string.IsNullOrEmpty(uiaTestObject.ControlName))
                        {
                            tempNewName = uiaTestObject.ControlName;
                        }
                        else
                        {
                            tempNewName = uiaTestObject.ControlTypeString;
                        }

                        nodeName = SpyWindowHelper.DeriveControlName(repoNurseNode, tempNewName);
                    }
                    else
                    {
                        nodeName = SpyWindowHelper.DeriveControlName(repoNurseNode, addedElement);
                        //TODO should use the following logic
                        //newCondition = new UIACondition(fromNode, nodeName);
                    }

                    string nodeText = testObjectNurse.NodeName = nodeName;

                    //TestObjectNurse newTestNurse = new TestObjectNurse(uiaTestObject);

                    newTestNurse.NodeName = nodeText;

                    repoNurseNode.AddChild(newTestNurse);

                    // TreeNode node = newTestNurse.TreeNode;

                    changed = true;

                    TreeNodeHelper.FixTreeNodeImage(node, uiaTestObject.ControlTypeString);

                    MergeObjectsToMainTree(newTestNurse, testObjectNurse.Children);
                    NeighbourChecker(newTestNurse, testObjectNurse);

                    node.Expand();
                    RaiseMergeCompleteEvent(true);
                }
            }

            return(changed);
        }