public static AutomationElement GetAddInRibbonTabElement(AutomationElement excelElement, ExcelAppWrapper app)
        {
            const string TheAddInTabControlName = "The AddIn";

            var ribbonTabs = UIAUtility.FindElementByNameWithTimeout(excelElement, "Ribbon Tabs", AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                    TreeScope.Descendants);

            var deTab = UIAUtility.FindElementByNameWithTimeout(ribbonTabs, TheAddInTabControlName, TimeSpan.FromSeconds(5),
                    TreeScope.Descendants); //Note Descendants needed here only for excel 2007

            if (app.IsVersion2010OrAbove())
            {
                UIAUtility.SelectMenu(deTab);
            }
            else
            {
                UIAUtility.PressButton(deTab);
            }

            var lowerRibbon = UIAUtility.FindElementByNameWithTimeout(excelElement, "Lower Ribbon", AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                    TreeScope.Descendants);

            return UIAUtility.FindElementByNameWithTimeout(lowerRibbon, TheAddInTabControlName, AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                    TreeScope.Descendants); //Note Descendants needed here only for excel 2007
        }
        public static void ClassInitialize(TestContext context)
        {
            AddinTestUtility.SetEnvironmentVars(AddinTestUtility.DemoUrl);

            if (Debugger.IsAttached) //use excel-per-instance only when running from VS - blows up running automated from console
            {
                _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade);
            }
        }
        public void Initialize()
        {
            if (!Debugger.IsAttached) //use excel-per-instance only when running from VS - blows up running automated from console
            {
                _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade);
            }
            _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add());

            //Ensure logged out at start
            _facade.Logout();
        }
        private AddinRibbonController(ExcelAppWrapper app, bool disableWaitForRibbonReady)
        {
            _app = app;
            _excel = ExcelAutoUtility.GetAppElementFromApp(_app.App.Application);

            _addinRibbonCtl = AddinTestUtility.GetAddInRibbonTabElement(_excel, app);

            if ( ! disableWaitForRibbonReady)
            {
                WaitForRibbonReady();
            }
        }
        private AddinRibbonController(ExcelAppWrapper app, bool disableWaitForRibbonReady)
        {
            _app   = app;
            _excel = ExcelAutoUtility.GetAppElementFromApp(_app.App.Application);

            _addinRibbonCtl = AddinTestUtility.GetAddInRibbonTabElement(_excel, app);

            if (!disableWaitForRibbonReady)
            {
                WaitForRibbonReady();
            }
        }
        public static ExcelAppWrapper OpenAndInstallAddin(string addinName, out dynamic facade)
        {
            var app = new ExcelAppWrapper(new Excel.Application());
            app.App.Visible = true;

            try
            {
                object addInNameObjType = addinName;
                var addin = app.App.COMAddIns.Item(ref addInNameObjType);
                // facade is an object of type IAddInFaƧade, but we need to use
                // late binding for everything to work properly.
                facade = addin.Object;

                return app;
            }
            catch (System.Runtime.InteropServices.COMException)
            {
                app.Dispose();
                throw;
            }
        }
Example #7
0
        public static ExcelAppWrapper OpenAndInstallAddin(string addinName, out dynamic facade)
        {
            var app = new ExcelAppWrapper(new Excel.Application());

            app.App.Visible = true;

            try
            {
                object addInNameObjType = addinName;
                var    addin            = app.App.COMAddIns.Item(ref addInNameObjType);
                // facade is an object of type IAddInFaƧade, but we need to use
                // late binding for everything to work properly.
                facade = addin.Object;

                return(app);
            }
            catch (System.Runtime.InteropServices.COMException)
            {
                app.Dispose();
                throw;
            }
        }
Example #8
0
        public static AutomationElement GetAddInRibbonTabElement(AutomationElement excelElement, ExcelAppWrapper app)
        {
            const string TheAddInTabControlName = "The AddIn";

            var ribbonTabs = UIAUtility.FindElementByNameWithTimeout(excelElement, "Ribbon Tabs", AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                                                                     TreeScope.Descendants);

            var deTab = UIAUtility.FindElementByNameWithTimeout(ribbonTabs, TheAddInTabControlName, TimeSpan.FromSeconds(5),
                                                                TreeScope.Descendants); //Note Descendants needed here only for excel 2007

            if (app.IsVersion2010OrAbove())
            {
                UIAUtility.SelectMenu(deTab);
            }
            else
            {
                UIAUtility.PressButton(deTab);
            }

            var lowerRibbon = UIAUtility.FindElementByNameWithTimeout(excelElement, "Lower Ribbon", AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                                                                      TreeScope.Descendants);

            return(UIAUtility.FindElementByNameWithTimeout(lowerRibbon, TheAddInTabControlName, AddinTestUtility.RibbonButtonsBecomeActivatedTimeout,
                                                           TreeScope.Descendants)); //Note Descendants needed here only for excel 2007
        }
        public void LoginDialog_RememberMeSelectedLogout_RememberEmailOnlyOnStartup()
        {
            var ribbon = AddinRibbonController.Initialize(_app);

            //Login and select Remember Me
            var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon);
            loginDlg.Email = AddinTestUtility.LoginEmail;
            loginDlg.Password = AddinTestUtility.LoginPsw;
            loginDlg.RememberMe = true;
            loginDlg.SelectOkVerifySuccess();

            //Logout
            ribbon.InvokeButton(AddinRibbonButton.Logout);
            ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible);

            //Close excel
            _wb.Dispose();
            _app.Dispose();

            //Re-open excel
            _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade);
            _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add());

            ribbon = AddinRibbonController.Initialize(_app);

            //Validate not auto-logged-in, but email addr remembered
            loginDlg = AddinTestUtility.OpenLoginDialog(ribbon);

            Assert.AreEqual(AddinTestUtility.LoginEmail, loginDlg.Email);
            Assert.AreEqual(string.Empty, loginDlg.Password);

            //Close dialog
            loginDlg.SelectCancelVerifySuccess();
        }
        public void LoginDialog_RememberMeSelected_LoggedInOnStartup()
        {
            var ribbon = AddinRibbonController.Initialize(_app);

            //Login and select Remember Me
            var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon);
            loginDlg.Email = AddinTestUtility.LoginEmail;
            loginDlg.Password = AddinTestUtility.LoginPsw;
            loginDlg.RememberMe = true;
            loginDlg.SelectOkVerifySuccess();

            //Close excel
            _wb.Dispose();
            _app.Dispose();

            //Re-open excel
            _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade);
            _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add());

            //Validate auto-logged-in
            ribbon = AddinRibbonController.Initialize(_app,
                    true); //disableWaitForRibbonReady

            ribbon.PostInitializeSpecialCaseAutologgedIn();

            ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.Enabled, AddinTestUtility.AuthenticationTimeout);

            //Leave test in a logged-out / non-remember-me state
            ribbon.InvokeButton(AddinRibbonButton.Logout);
            ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible);

            loginDlg = AddinTestUtility.OpenLoginDialog(ribbon);
            loginDlg.Email = AddinTestUtility.LoginEmail;
            loginDlg.Password = AddinTestUtility.LoginPsw;
            loginDlg.RememberMe = false;
            loginDlg.SelectOkVerifySuccess();

            ribbon.InvokeButton(AddinRibbonButton.Logout);
            ribbon.ValidateSingleButtonState(AddinRibbonButton.Logout, RibbonButtonState.NonVisible);
        }
        public void LoginDialog_RememberMeDeselected_NotLoggedInOnStartup()
        {
            var ribbon = AddinRibbonController.Initialize(_app);

            //Login and select Remember Me
            var loginDlg = AddinTestUtility.OpenLoginDialog(ribbon);
            loginDlg.Email = AddinTestUtility.LoginEmail;
            loginDlg.Password = AddinTestUtility.LoginPsw;
            loginDlg.RememberMe = false;
            loginDlg.SelectOkVerifySuccess();

            //Close excel
            _wb.Dispose();
            _app.Dispose();

            //Re-open excel
            _app = ExcelAutoUtility.OpenAndInstallAddin("TheAddIn", out _facade);
            _wb = new ExcelWorkbookWrapper(_app.App.Workbooks.Add());

            //Validate not auto-logged-in
            ribbon = AddinRibbonController.Initialize(_app);

            Assert.AreEqual(RibbonButtonState.Enabled, ribbon.GetButtonState(AddinRibbonButton.Login));
        }
 public static AddinRibbonController Initialize(ExcelAppWrapper app, bool disableWaitForRibbonReady)
 {
     return new AddinRibbonController(app, disableWaitForRibbonReady);
 }
 public static AddinRibbonController Initialize(ExcelAppWrapper app)
 {
     return Initialize(app,
             false); //disableWaitForRibbonReady
 }
 public static AddinRibbonController Initialize(ExcelAppWrapper app, bool disableWaitForRibbonReady)
 {
     return(new AddinRibbonController(app, disableWaitForRibbonReady));
 }
 public static AddinRibbonController Initialize(ExcelAppWrapper app)
 {
     return(Initialize(app,
                       false)); //disableWaitForRibbonReady
 }