コード例 #1
0
        public override void WaitForWindowTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            Debug.WriteLine("get the dialog launch button from the main window");
            var mainWindow = TestAutomatedApp.MainWindow as AutomationElement;

            var launchButton = mainWindow.FindAll(
                TreeScope.Descendants,
                new PropertyCondition(
                    AutomationElement.AutomationIdProperty,
                    "OpenButton",
                    PropertyConditionFlags.IgnoreCase))[0];

            Debug.WriteLine("click the button to launch the dialog");
            var invokePattern = launchButton.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;

            invokePattern.Invoke();

            Debug.WriteLine("wait for the window");
            TestAutomatedApp.WaitForWindow("TestDialog", DefaultTimeoutTimeSpan);

            var testDialogWindows = Microsoft.Test.AutomationUtilities.FindElementsById(AutomationElement.RootElement, "TestDialog");

            Assert.NotNull(testDialogWindows);
            Assert.Equal <int>(1, testDialogWindows.Count);
        }
コード例 #2
0
 public void CloseTest()
 {
     Assert.Throws <MockApplicationException>(
         () =>
     {
         TestAutomatedApp.Close();
     });
 }
コード例 #3
0
 public void WaitForInputIdleTest()
 {
     Assert.Throws <MockApplicationException>(
         () =>
     {
         TestAutomatedApp.WaitForInputIdle(TimeSpan.FromMilliseconds(DefaultTimeoutInMS));
     });
 }
コード例 #4
0
 public void WaitForWindowTest()
 {
     Assert.Throws <MockApplicationException>(
         () =>
     {
         TestAutomatedApp.WaitForWindow("TestDialog", TimeSpan.FromMilliseconds(DefaultTimeoutInMS));
     });
 }
コード例 #5
0
 protected virtual void MyTestCleanup()
 {
     if (TestAutomatedApp != null)
     {
         // test closing down the app
         TestAutomatedApp.Close();
         TestAutomatedApp = null;
     }
 }
コード例 #6
0
        public override void MainWindowTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            Assert.NotNull(TestAutomatedApp.MainWindow);
            Assert.True(typeof(AutomationElement).IsAssignableFrom(TestAutomatedApp.MainWindow.GetType()));
        }
コード例 #7
0
        public override void WaitForWindowTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            Debug.WriteLine("get the dialog launch button from the main window");

            var dispatcher = ((TestAutomatedApp as InProcessApplication).ApplicationDriver as Application).Dispatcher;

            dispatcher.Invoke(DispatcherPriority.Normal,
                              (ThreadStart) delegate
            {
                var mainWindow = TestAutomatedApp.MainWindow as Window;
                mainWindow.Activate();
                var launchButton = TestHelper.GetVisualChild <Button>(mainWindow);

                Debug.WriteLine("click the button to launch the dialog");
                var clickPointWPF = launchButton.PointToScreen(new Point(2, 2));
                var clickPoint    = new System.Drawing.Point();
                clickPoint.X      = (int)clickPointWPF.X;
                clickPoint.Y      = (int)clickPointWPF.Y;

                Microsoft.Test.Input.Mouse.MoveTo(clickPoint);
                TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
                Microsoft.Test.Input.Mouse.Click(System.Windows.Input.MouseButton.Left);
            });

            Debug.WriteLine("wait for the window");
            TestAutomatedApp.WaitForWindow("TestDialog", DefaultTimeoutTimeSpan);

            bool isInitialized = false;

            dispatcher.Invoke(
                DispatcherPriority.Normal,
                (ThreadStart) delegate
            {
                Window windowToWait = null;
                foreach (Window window in Application.Current.Windows)
                {
                    if (window.Title == "TestDialog")
                    {
                        windowToWait  = window;
                        isInitialized = true;
                    }
                }
            });

            Assert.True(isInitialized);
        }
コード例 #8
0
        public override void OnFocusChangedTest()
        {
            var focusChangedList = new List <string>();

            TestAutomatedApp.AddEventHandler(
                AutomatedApplicationEventType.FocusChangedEvent,
                new EventHandler <AutomatedApplicationFocusChangedEventArgs>((s, e) =>
            {
                Debug.WriteLine(string.Format(
                                    CultureInfo.CurrentCulture,
                                    "Focus changed event fired. NewFocusedElement: {0}",
                                    (e.NewFocusedElement as AutomationElement).Current.Name));
                focusChangedList.Add((e.NewFocusedElement as AutomationElement).Current.Name);
            }));

            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            Debug.WriteLine("press tab");
            Keyboard.Press(Key.Tab);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            // allow time for the events to fire
            Thread.Sleep(1500);

            Debug.WriteLine("press tab again");
            Keyboard.Press(Key.Tab);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            // allow time for the events to fire
            Thread.Sleep(1500);

            Debug.WriteLine("press tab again");
            Keyboard.Press(Key.Tab);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            // allow time for the events to fire
            Thread.Sleep(1500);

            Assert.Equal <int>(4, focusChangedList.Count);
            Assert.Equal <string>("Window1", focusChangedList[0]);
            Assert.Equal <string>("Open", focusChangedList[1]);
            Assert.Equal <string>("Start Animation", focusChangedList[2]);
            Assert.Equal <string>("Debug", focusChangedList[3]);
        }
コード例 #9
0
        public override void WaitForMainWindowTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            bool isInitialized = false;
            var  dispatcher    = ((TestAutomatedApp as InProcessApplication).ApplicationDriver as Application).Dispatcher;

            dispatcher.Invoke(DispatcherPriority.Normal,
                              (ThreadStart) delegate
            {
                isInitialized = TestAutomatedApp.MainWindow != null;
            });
            Assert.True(isInitialized);
        }
コード例 #10
0
        public override void OnFocusChangedTest()
        {
            var focusChangedList = new List <string>();

            TestAutomatedApp.AddEventHandler(
                AutomatedApplicationEventType.FocusChangedEvent,
                new EventHandler <AutomatedApplicationFocusChangedEventArgs>((s, e) =>
            {
                Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Focus changed event fired. NewFocusedElement: {0}", (e.NewFocusedElement as ContentControl).Content.ToString()));
                focusChangedList.Add((e.NewFocusedElement as ContentControl).Content.ToString());
            }));

            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            // press tab to change focus
            var dispatcher = ((TestAutomatedApp as InProcessApplication).ApplicationDriver as Application).Dispatcher;

            dispatcher.Invoke(
                DispatcherPriority.Normal,
                (ThreadStart) delegate
            {
                Debug.WriteLine("press tab");
                Microsoft.Test.Input.Keyboard.Press(System.Windows.Input.Key.Tab);
                TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

                Debug.WriteLine("press tab again");
                Microsoft.Test.Input.Keyboard.Press(System.Windows.Input.Key.Tab);
                TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

                Debug.WriteLine("press tab again");
                Microsoft.Test.Input.Keyboard.Press(System.Windows.Input.Key.Tab);
                TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
            });

            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            Assert.Equal <int>(4, focusChangedList.Count);
            Assert.Equal <string>("System.Windows.Controls.Grid", focusChangedList[0]);
            Assert.Equal <string>("Open", focusChangedList[1]);
            Assert.Equal <string>("Start Animation", focusChangedList[2]);
            Assert.Equal <string>("Debug", focusChangedList[3]);
        }
コード例 #11
0
        public override void WaitForInputIdleTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            var mainWindow = TestAutomatedApp.MainWindow as AutomationElement;

            var winPattern = mainWindow.GetCurrentPattern(WindowPattern.Pattern) as WindowPattern;

            winPattern.SetWindowVisualState(WindowVisualState.Maximized);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
            Assert.Equal <WindowVisualState>(WindowVisualState.Maximized, winPattern.Current.WindowVisualState);

            winPattern.SetWindowVisualState(WindowVisualState.Minimized);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
            Assert.Equal <WindowVisualState>(WindowVisualState.Minimized, winPattern.Current.WindowVisualState);

            winPattern.SetWindowVisualState(WindowVisualState.Normal);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
            Assert.Equal <WindowVisualState>(WindowVisualState.Normal, winPattern.Current.WindowVisualState);
        }
コード例 #12
0
        //[Fact]
        public override void WaitForWindowTest()
        {
            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            Debug.WriteLine("get the dialog launch button from the main window");
            var mainWindow   = TestAutomatedApp.MainWindow as Window;
            var launchButton = TestHelper.GetVisualChild <Button>(mainWindow);

            Debug.WriteLine("click the button to launch the dialog");
            var clickPointWPF = launchButton.PointToScreen(new Point(3, 3));
            var clickPoint    = new System.Drawing.Point();

            clickPoint.X = (int)clickPointWPF.X;
            clickPoint.Y = (int)clickPointWPF.Y;

            Microsoft.Test.Input.Mouse.MoveTo(clickPoint);
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);
            Microsoft.Test.Input.Mouse.Click(System.Windows.Input.MouseButton.Left);

            Debug.WriteLine("wait for the window");
            TestAutomatedApp.WaitForWindow("TestDialog", DefaultTimeoutTimeSpan);

            Window windowToWait = null;

            foreach (Window window in Application.Current.Windows)
            {
                if (window.Title == "TestDialog")
                {
                    windowToWait = window;
                }
            }

            Assert.NotNull(windowToWait);
        }
コード例 #13
0
        public override void WaitForInputIdleTest()
        {
            bool isWaitForOperationCompleted = false;
            var  operationOrderQueue         = new Queue <int>();

            Debug.WriteLine("starting automated app...");
            TestAutomatedApp.Start();
            TestAutomatedApp.WaitForMainWindow(DefaultTimeoutTimeSpan);

            var dispatcher = ((TestAutomatedApp as InProcessApplication).ApplicationDriver as Application).Dispatcher;

            dispatcher.Hooks.OperationCompleted += (completedSender, completedArgs) =>
            {
                if (completedArgs.Operation.Priority == DispatcherPriority.ApplicationIdle)
                {
                    operationOrderQueue.Enqueue(2);

                    isWaitForOperationCompleted = true;
                    Debug.WriteLine(string.Format(
                                        CultureInfo.CurrentCulture,
                                        "operation completed: pri: {0}, status: {1}, result: {2}",
                                        completedArgs.Operation.Priority,
                                        completedArgs.Operation.Status,
                                        completedArgs.Operation.Result));
                }
            };

            // add other operations to the queue that should run before ApplicationIdle
            dispatcher.BeginInvoke(new DispatcherOperationCallback((param) =>
            {
                Debug.WriteLine("minimize the window");
                (TestAutomatedApp.MainWindow as Window).WindowState = WindowState.Minimized;

                Debug.WriteLine("maximize the window");
                (TestAutomatedApp.MainWindow as Window).WindowState = WindowState.Maximized;

                Debug.WriteLine("normalize the window");
                (TestAutomatedApp.MainWindow as Window).WindowState = WindowState.Normal;

                operationOrderQueue.Enqueue(1);

                return(null);
            }),
                                   DispatcherPriority.DataBind,
                                   new object[] { null });

            Assert.False(isWaitForOperationCompleted);

            operationOrderQueue.Enqueue(0);

            Debug.WriteLine("wait for input idle");
            TestAutomatedApp.WaitForInputIdle(DefaultTimeoutTimeSpan);

            operationOrderQueue.Enqueue(3);

            Assert.True(isWaitForOperationCompleted);

            // verify the operations took place in the correct order
            for (int i = 0; i < operationOrderQueue.Count; i++)
            {
                Assert.Equal <int>(i, operationOrderQueue.Dequeue());
            }
        }