コード例 #1
0
        public void VirtualTestObject_GetDescriptor()
        {
            VirtualTestObject virtualObject = new VirtualTestObject("Rect1", new Rectangle(10, 11, 110, 220));
            ObjectDescriptor  descriptor    = virtualObject.GetDescriptor();

            Debug.WriteLine(descriptor.ToString());
        }
コード例 #2
0
        public ITestObject CreateTestObject(ObjectDescriptor descriptor, ModelLoadLevel loadLevel = ModelLoadLevel.ReplayOnly)
        {
            if (descriptor.Type == NodeType.UIAControl)
            {
                ITestObject testObject = UIAUtility.CreateTestObject(descriptor, loadLevel);

                CreateChildObjects(testObject, descriptor, loadLevel);

                return(testObject);
            }
            else if (descriptor.Type == NodeType.VirtualControl)
            {
                //TODO create the virtual control
                ITestObject testObject = VirtualTestObject.CreateTestObject(descriptor, loadLevel);

                CreateChildObjects(testObject, descriptor, loadLevel);

                return(testObject);
                //return CreateTestObject(descriptor, loadLevel);
            }
            else if (descriptor.Type == NodeType.Selenium)
            {
                ITestObject testObject = new SETestObject(descriptor);

                CreateChildObjects(testObject, descriptor, loadLevel);

                return(testObject);
            }

            throw new NotImplementedException();
        }
コード例 #3
0
        public void ObjectDescriptor_GetObjectData()
        {
            FormatterConverter formatConverter   = new FormatterConverter();
            SerializationInfo  serializationInfo = new SerializationInfo(typeof(ObjectDescriptor), formatConverter);

            VirtualTestObject virtualTestObject = new VirtualTestObject()
            {
                BoundingRect = new Rect(10, 20, 30, 40)
            };
            ObjectDescriptor descriptor = virtualTestObject.GetDescriptor();

            StreamingContext      context = new StreamingContext();
            IdentifyPropertyGroup group   = descriptor.GetItem <IdentifyPropertyGroup>();

            Assert.AreEqual("10,20,30,40", group.Properties[UIAControlKeys.BoundingRectangle]);
            descriptor.GetObjectData(serializationInfo, context);

            string typeString = null;

            foreach (SerializationEntry entry in serializationInfo)
            {
                if (entry.Name == DescriptorKeys.NodeType)
                {
                    typeString = (string)entry.Value;
                    break;
                }
                else if (entry.Name == IdentifyPropertyGroup.Key)
                {
                    group = (IdentifyPropertyGroup)entry.Value;
                    break;
                }
            }
            Assert.AreEqual(NodeType.VirtualControl, typeString);
            Assert.AreEqual("10,20,30,40", group.Properties[UIAControlKeys.BoundingRectangle]);
        }
コード例 #4
0
        public void VirtualTestObject_Properties()
        {
            VirtualTestObject virtualObject = new VirtualTestObject();

            virtualObject.Properties.Add(ControlKeys.Text, "Some text");

            Assert.AreEqual("Some text", virtualObject.Properties[ControlKeys.Text]);
        }
コード例 #5
0
        public void PrepareTree()
        {
            _treeView = new TreeView();

            _rootTestObject       = new UIATestObject();
            _parentTestObject     = new UIATestObject();
            _childTestObject      = new UIATestObject();
            _grandChildTestObject = new VirtualTestObject();
        }
コード例 #6
0
        private void btnHighlight_Click(object sender, EventArgs e)
        {
            if (virtualControlListView1.SelectedItems.Count == 0)
            {
                return;
            }
            VirtualTestObject testObject = (VirtualTestObject)virtualControlListView1.SelectedItems[0].Tag;

            UIAHighlight.HighlightVirtualControl(_parentControl.AutomationElement, testObject.BoundingRect);
        }
コード例 #7
0
        public void VirtualTestObject_ctor()
        {
            VirtualTestObject virtualObject = new VirtualTestObject();

            Assert.AreEqual(NodeType.VirtualControl, virtualObject.ControlTypeString);
            virtualObject.BoundingRect = new Rect(10, 10, 100, 200);
            virtualObject.NodeName     = "test control";
            Assert.AreEqual(1, virtualObject.Properties.Count);
            Assert.IsTrue(virtualObject.Properties.ContainsKey(UIAControlKeys.BoundingRectangle));
            Assert.AreEqual("10,10,100,200", virtualObject.Properties[UIAControlKeys.BoundingRectangle]);
        }
コード例 #8
0
 private VirtualTestObject[] initVirtualControls()
 {
     VirtualTestObject[] controls = new VirtualTestObject[]
     {
         new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)),
         new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74)),
         new VirtualTestObject("commission", new Rectangle(12, 185, 201, 80)),
         new VirtualTestObject("contract", new Rectangle(14, 275, 197, 74)),
     };
     return(controls);
 }
コード例 #9
0
        public void ObjectDescriptor_SerializeVirtualTestObject()
        {
            //TODO
            ObjectDescriptor  descriptor = new ObjectDescriptor();
            VirtualTestObject testObject = new VirtualTestObject();

            descriptor.Properties.Add(UIAControlKeys.BoundingRectangle, "1003,364,167,28");

            string serializedObject = JsonUtil.SerializeObject(descriptor);

            Debug.WriteLine(serializedObject);
        }
コード例 #10
0
 private VirtualTestObject[] initVirtualControls()
 {
     VirtualTestObject[] controls = new VirtualTestObject[]
     {
         new VirtualTestObject("all", new Rectangle(11, 16, 200, 84)),
         new VirtualTestObject("salary", new Rectangle(11, 102, 199, 74)),
         new VirtualTestObject("commission", new Rectangle(12, 185, 201, 80)),
         new VirtualTestObject("contract", new Rectangle(14, 275, 197, 74)),
         new VirtualTestObject("Terminated", new Rectangle(17, 358, 191, 75)),
         new VirtualTestObject("OnLeave", new Rectangle(13, 443, 196, 80))
     };
     return(controls);
 }
コード例 #11
0
        public void VirtualTestObject_AreEqual()
        {
            VirtualTestObject virtualObject1   = new VirtualTestObject("control1", new Rectangle(10, 11, 110, 220));
            VirtualTestObject virtualObject1_1 = new VirtualTestObject("control1", new Rectangle(10, 11, 110, 220));
            VirtualTestObject virtualObject2   = new VirtualTestObject("another_control", new Rectangle(10, 11, 110, 220));
            VirtualTestObject virtualObject3   = new VirtualTestObject("another_control", new Rectangle(20, 31, 210, 320));
            VirtualTestObject virtualObject4   = null;

            Assert.IsTrue(virtualObject1 == virtualObject1_1);

            Assert.IsTrue(virtualObject1 != virtualObject2);
            Assert.IsTrue(virtualObject2 != virtualObject3);
            Assert.IsTrue(virtualObject1 != virtualObject4);
        }
コード例 #12
0
        public void AppEnvironment_DumpRecyclingBin()
        {
            string modelFilePath = "TempModelFile.json";

            try
            {
                AppEnvironment.CurrentModelFile = AppModelFile.Create(modelFilePath);

                //init test objects
                UIATestObject     _parentTestObject     = new UIATestObject();
                UIATestObject     _childTestObject      = new UIATestObject();
                UIATestObject     childTestObject2      = new UIATestObject();
                VirtualTestObject _grandChildTestObject = new VirtualTestObject();

                CreatePicture(AppEnvironment.CurrentModelFile);


                //initialize nurse objects
                TestObjectNurse parentNurse = new TestObjectNurse(_parentTestObject);

                TestObjectNurse childNurse      = parentNurse.AddChild(_childTestObject) as TestObjectNurse;
                TestObjectNurse childNurse2     = parentNurse.AddChild(childTestObject2) as TestObjectNurse;
                TestObjectNurse grandChildNurse = childNurse.AddChild(_grandChildTestObject) as TestObjectNurse;

                string imagePath1 = AppEnvironment.GetModelResourceFilePath("TestObjectNurseTest.png");
                string imagePath2 = AppEnvironment.GetModelResourceFilePath("TestObjectNurseTest1.png");

                Assert.IsTrue(File.Exists(imagePath1));
                Assert.IsTrue(File.Exists(imagePath2));

                childNurse2.ImageFile     = "TestObjectNurseTest.png";
                grandChildNurse.ImageFile = "TestObjectNurseTest1.png";

                parentNurse.RemoveChild(childNurse);
                Assert.IsTrue(File.Exists(imagePath1));
                parentNurse.RemoveChild(childNurse2);
                Assert.IsTrue(File.Exists(imagePath2));

                AppEnvironment.DumpRecyclingBin(parentNurse);

                Assert.IsFalse(File.Exists(imagePath1));
                Assert.IsFalse(File.Exists(imagePath2));
            }
            finally
            {
                File.Delete("TestObjectNurseTest.png");
                File.Delete("TestObjectNurseTest1.png");
            }
        }
コード例 #13
0
        public void UIAHighlight_SearchandHighlight_Virtual()
        {
            UIATestObject testObject = descriptor.GetObject() as UIATestObject;

            VirtualTestObject virtualButton7 = new VirtualTestObject("button7", new Rect(76, 139, 34, 34));
            VirtualTestObject virtualButton4 = new VirtualTestObject("button4", new Rect(74, 177, 36, 40));

            testObject.AddChild(virtualButton7);
            testObject.AddChild(virtualButton4);


            //this should also succeed
            bool result = UIAHighlight.SearchAndHighlight(virtualButton7);

            Assert.IsTrue(result);
            result = UIAHighlight.SearchAndHighlight(virtualButton4);
            Assert.IsTrue(result);
        }
コード例 #14
0
        public void VirtualTestObject_CreateTestObject()
        {
            ObjectDescriptor descriptor = ObjectDescriptor.FromJson(
                @"
            {
              ""ntype"": ""virtual"",
              ""nname"": ""commission"",
              ""identifyProperties"": {
			    ""boundingRectangle"": ""12, 185, 201, 80""
              }
            }");

            VirtualTestObject virtualObject = VirtualTestObject.CreateTestObject(descriptor, ModelLoadLevel.Full);

            Assert.AreEqual("commission", virtualObject.NodeName);

            Rectangle expectedRect = new Rectangle(12, 185, 201, 80);

            Assert.AreEqual(expectedRect, virtualObject.BoundingRectangle);
        }
コード例 #15
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);
        }
コード例 #16
0
        public void AddControl(VirtualTestObject control)
        {
            if (string.IsNullOrEmpty(control.NodeName))
            {
                throw new ArgumentException("Control name cannot be empty");
            }
            VirtualTestObject findResult = FindItem(control.NodeName);

            if (findResult != null)
            {
                RemoveControl(findResult.NodeName);
            }

            string    controlName = control.NodeName;
            Rectangle rect        = control.BoundingRectangle;

            ListViewItem item = new ListViewItem(new string[] { controlName, rect.Left.ToString(), rect.Height.ToString() });

            item.Tag = control;
            this.Items.Add(item);
        }
コード例 #17
0
        public void SnapshotPictureBox_TestObject_Virtual()
        {
            UIATestObject testObject = new UIATestObject();

            TestObjectNurse nurseObject = new TestObjectNurse(testObject);

            nurseObject.ImageFile = "..\\SnapshotPictureBoxTest.png";

            VirtualTestObject virtualTestObject  = new VirtualTestObject("virtual1", new Rectangle(10, 20, 30, 40));
            TestObjectNurse   virtualNurseObject = nurseObject.AddChild(virtualTestObject) as TestObjectNurse;

            SnapshotPictureBox pictureBox = new SnapshotPictureBox();

            pictureBox.TestObject = virtualNurseObject;

            Rectangle[] virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(1, virtualRects.Length);
            Assert.AreEqual(new Rectangle(10, 20, 30, 40), virtualRects[0]);


            VirtualTestObject virtualTestObject2  = new VirtualTestObject("virtual2", new Rectangle(100, 200, 300, 400));
            TestObjectNurse   virtualNurseObject2 = nurseObject.AddChild(virtualTestObject2) as TestObjectNurse;

            pictureBox.TestObject = virtualNurseObject2;

            virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(1, virtualRects.Length);
            Assert.AreEqual(new Rectangle(100, 200, 300, 400), virtualRects[0]);


            pictureBox.TestObject = nurseObject;

            virtualRects = pictureBox.VirtualRectangles;

            Assert.AreEqual(0, virtualRects.Length);
            Assert.AreEqual(new Rectangle(0 + margin, 0 + margin, 100 - 2 * margin, 200 - 2 * margin)
                            , pictureBox.BorderRect);
        }
コード例 #18
0
        public static void InitTest(TestContext context)
        {
            _treeView = new TreeView();

            TestObjectNurse treeNurse = TestObjectNurse.FromTree(_treeView);

            UIATestObject     rootObject   = new UIATestObject("root node", ControlType.Pane, null);
            UIATestObject     parentObject = new UIATestObject("parent node", ControlType.Pane, null);
            UIATestObject     childObject  = new UIATestObject("child1 node", ControlType.Button, null);
            VirtualTestObject childObject1 = new VirtualTestObject("child2 node", new Rectangle(10, 20, 30, 40));

            TestObjectNurse tempNurse = treeNurse.AddChild(rootObject) as TestObjectNurse;

            tempNurse = tempNurse.AddChild(parentObject) as TestObjectNurse;
            tempNurse.AddChild(childObject);
            tempNurse.AddChild(childObject1);

            UIATestObject rootObject1   = new UIATestObject("root1 node", ControlType.Pane, null);
            UIATestObject parentObject2 = new UIATestObject("parent2 node", ControlType.Pane, null);

            tempNurse = treeNurse.AddChild(rootObject1) as TestObjectNurse;
            treeNurse.AddChild(parentObject2);
        }
コード例 #19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="newControls"></param>
        /// <param name="parentNode"></param>
        /// <returns>return whether virtual controls are changed</returns>
        public static bool MergeVirtualControlsToTree(VirtualTestObject[] newControls, TreeNode parentNode)
        {
            TestObjectNurse parentNurse = TestObjectNurse.FromTreeNode(parentNode);

            //remove the previously attached nodes.
            List <ITestObject> oldControls = new List <ITestObject>(parentNurse.Children).FindAll(to => ((TestObjectNurse)to).TestObject is VirtualTestObject);

            if (oldControls.Count() == newControls.Count())
            {
                int i = 0;
                foreach (TestObjectNurse oldControl in oldControls)
                {
                    VirtualTestObject oldObject = (VirtualTestObject)oldControl.TestObject;
                    VirtualTestObject newObject = newControls[i];
                    if (oldObject != newObject)
                    {
                        break;
                    }
                    ++i;
                }
                if (i == newControls.Count())
                {
                    return(false);                          //exactly the same, not update.
                }
            }
            foreach (ITestObject testObject in oldControls)
            {
                parentNurse.RemoveChild(testObject);
            }

            //Add new virtual nodes
            foreach (VirtualTestObject testObject in newControls)
            {
                parentNurse.AddChild(testObject);
            }
            return(true);
        }
コード例 #20
0
        //can highlight both virtual control and UIA control

        public static bool SearchAndHighlight(ITestObject testObject)
        {
            /*if (testObject.ControlTypeString.StartsWith("Web"))
             * {
             *  //check the WebDriverHost existing
             *
             *
             *
             *  SETestObject seTestObject = testObject as SETestObject;
             *  Rectangle rc = WebUtility.GetElementScreenRect(seTestObject.SEWebElement);
             *  HighlightRect(rc);
             *  return true;
             * }*/



            VirtualTestObject virtualTestObject = testObject as VirtualTestObject;

            UIATestObject uiaTestObject = (virtualTestObject == null) ? (UIATestObject)testObject: (UIATestObject)virtualTestObject.Parent;

            bool elementNotAvailable = false;

            try
            {
                if (!UIAUtility.CheckObjectExist(uiaTestObject.AutomationElement))
                {
                    return(false);
                }
            }
            catch (ElementNotAvailableException)
            {
                elementNotAvailable = true;
            }
            catch (UnauthorizedAccessException)
            {
                elementNotAvailable = true;
            }

            if (elementNotAvailable)
            {
                //clean up the cache
                UIATestObject tempTestObject = uiaTestObject;
                while (tempTestObject != null)
                {
                    tempTestObject.AutomationElement = null;
                    tempTestObject = (UIATestObject)tempTestObject.Parent;
                }
                if (!UIAUtility.CheckObjectExist(uiaTestObject.AutomationElement))
                {
                    return(false);
                }
            }

            AutomationElement elementToSearch = uiaTestObject.AutomationElement;

            if (virtualTestObject != null)
            {
                UIAHighlight.HighlightVirtualControl(elementToSearch, virtualTestObject.BoundingRect, _highlightColor);
            }
            else
            {
                UIAHighlight.HighlightAutomationElement(elementToSearch, _highlightColor);
            }

            return(true);
        }
コード例 #21
0
 public void AddControl(VirtualTestObject control)
 {
     virtualControlListView1.AddControl(control);
 }
コード例 #22
0
        public void VirtualTestObject_StringRectToRect()
        {
            Rect rect = VirtualTestObject.StringRectToRect("11, 16, 200, 84");

            Assert.AreEqual(new Rect(11, 16, 200, 84), rect);
        }