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; }
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; }
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; }
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); }
/// <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); } }
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); }
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); } } }
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); }