/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsUser(string role, string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickToAdvance(LoginBtn); // Will need to refactor this once I get a better understanding of roles and how they should be redirected once logged in if (role == "learner") { DashboardPage page = new DashboardPage(Browser); page.WaitForInitialize(); return(page); } if (role == "observer") { DashboardPage page = new DashboardPage(Browser); page.WaitForInitialize(); return(page); } else { DashboardPage page = new DashboardPage(Browser); page.WaitForInitialize(); return(page); } }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the home page to load /// </summary> /// <param name="userName"></param> /// <param name="password"></param> public dynamic Login(IWebDriver browser, string userName, string password) { browser.Navigate().GoToUrl(string.Format("{0}login", System.Configuration.ConfigurationManager.AppSettings["LSURL"].ToString())); LoginPage LSLP = new LoginPage(browser); LSLP.WaitForInitialize(); UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); // If there is only 1 site in an environment, then the application will go to that sites landing page. If there are multiple sites, // then it goes to the Search page. So we first need to wait for an element that appears on BOTH pages (The Sites breadcrumb link) Browser.WaitForElement(Bys.SitePage.SitesBreadCrumbLnk, ElementCriteria.IsVisible); // Then use a TRY to wait a split second for the Sites page Additional Information tab (This tab appears immediately along // with the Sites breadcrumb link). If that doesnt appear, then that means we will be on the Search page, so // we will use the Catch to wait for the Search page try { Browser.WaitForElement(Bys.SitePage.AdditionalInfoTab, TimeSpan.FromMilliseconds(500), ElementCriteria.IsVisible); SitePage page = new SitePage(Browser); return(page); } catch { SearchPage page = new SearchPage(Browser); page.WaitForInitialize(); return(page); } }
//Login method for page object public ProfilePage Login(string username, string password) { UserNameTxt.SendKeys(username); PasswordTxt.SendKeys(password); LoginBtn.Click(); return(new ProfilePage()); }
/// <summary> /// Enters text in the username and password field, clicks the login button, and waits for the home page to load /// </summary> /// <param name="userName"></param> /// <param name="password"></param> public dynamic Login(IWebDriver browser, string userName, string password) { UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); return(ClickAndWait(LoginBtn)); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public HomePage LoginAsExistingUser(string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); HomePage HP = ClickAndWait(LoginBtn); return(HP); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Library page to load /// </summary> /// <param name="userName"></param> /// <param name="Password"></param> public dynamic LoginAsUser(string userName, string Password) { // Login with a valid user credentials UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(Password); PasswordTxt.SendKeys(Keys.Tab); ClickToAdvance(LoginBtn); Browser.WaitForElement(Bys.EducationCenterPage.GcepLnk, TimeSpan.FromSeconds(60), ElementCriteria.IsEnabled); return(new EducationCenterPage(Browser)); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="userName">The cme360 username</param> /// <param name="password"></param> public MyDashboardPage Login(string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); MyDashboardPage page = ClickAndWait(LoginBtn); return(page); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="userName">This is a Description</param> /// <param name="password"></param> public dynamic LoginAsUser(string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickToAdvance(LoginBtn); DashboardPage page = new DashboardPage(Browser); page.WaitForInitialize(); return(page); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); HomePage HP = ClickToAdvance(LoginBtn); return(HP); //DashboardPage DP = new DashboardPage(Browser); // DP.WaitForInitialize(); // return DP; }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickToAdvance(LoginBtn); // CBDProgDirectorPage PD = new CBDProgDirectorPage(Browser); // PD.WaitForInitialize(); // return PD; return(null); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(UserUtils.UserRole role, string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding these if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again // UPDATE: Added another if statement to refresh again. This was working perfectly before today (Today I increased the amount of parallel // tests, and also started running Firefox again, so the issue is either with Firefox, or with increasing the max parallel setting. The max // is set at 16 now, this never was an issue when max was set to 6) if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); try { LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } catch { if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } } } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.PD: CBDProgDirectorPage PD = new CBDProgDirectorPage(Browser); PD.WaitForInitialize(); return(PD); case UserUtils.UserRole.PGD: CBDProgDeanPage page = new CBDProgDeanPage(Browser); page.WaitForInitialize(); return(page); case UserUtils.UserRole.CUPER: MyDashboardPage PERCUMyDashboardPage = new MyDashboardPage(Browser); PERCUMyDashboardPage.WaitForInitialize(); PERCredentialStaffPage CP = PERCUMyDashboardPage.ClickAndWaitBasePage(PERCUMyDashboardPage.PERAFCTab); return(CP); case UserUtils.UserRole.CSDiploma: DiplomaClinicalSupervisorPage CSP = new DiplomaClinicalSupervisorPage(Browser); CSP.WaitForInitialize(); return(CSP); case UserUtils.UserRole.CUDiploma: MyDashboardPage DiplomaCUMyDashboardPage = new MyDashboardPage(Browser); DiplomaCUMyDashboardPage.WaitForInitialize(); DiplomaCredentialStaffPage DCUP = DiplomaCUMyDashboardPage.ClickAndWaitBasePage(DiplomaCUMyDashboardPage.MyDiplomaTab); return(DCUP); case UserUtils.UserRole.DDDiploma: DiplomaDirectorPage DD = new DiplomaDirectorPage(Browser); DD.WaitForInitialize(); return(DD); case UserUtils.UserRole.FOMDiploma: DiplomaFacOfMedicinePage FOMP = new DiplomaFacOfMedicinePage(Browser); FOMP.WaitForInitialize(); return(FOMP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.REF: PERRefereePage PERRP = new PERRefereePage(Browser); PERRP.WaitForInitialize(); return(PERRP); case UserUtils.UserRole.ASRPER: PERAssessorPage AP = new PERAssessorPage(Browser); AP.WaitForInitialize(); return(AP); case UserUtils.UserRole.ASRDiploma: DiplomaAssessorPage DAP = new DiplomaAssessorPage(Browser); DAP.WaitForInitialize(); return(DAP); } return(null); }
/// <summary> /// Logs out of the current user only if a user is currently logged in, enters text in the username and password field, /// clicks the login button, then waits for the URL of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="newUser">true or false, depending on if it is a new user or not</param> public dynamic LoginAsNewUser(UserUtils.UserRole role, string userName, string password) { IWebElement acceptBtn = null; // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); // For some reason, the Selenium click fails to make the RCP page login, it instead stays at the login page. // This happens maybe 5% of the time. So we will add a try catch block here to click the login button // again if it fails try { acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, TimeSpan.FromSeconds(10), ElementCriteria.IsVisible); } catch { ClickAndWait(LoginBtn); acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, ElementCriteria.IsVisible); } Thread.Sleep(0300); acceptBtn.Click(); // Depending on the role of the user that we use, we need to wait differently and return different pages switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding these if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again // UPDATE: Added another if statement to refresh again. This was working perfectly before today (Today I increased the amount of parallel // tests, and also started running Firefox again, so the issue is either with Firefox, or with increasing the max parallel setting. The max // is set at 16 now, this never was an issue when max was set to 6) // UPDATE: Two if statements still didndt resolve the issue. Going to remove Navigation method, and instead click on the CBD tab and see // if that works if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); try { LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } catch { if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Browser.WaitForElement(Bys.RCPPage.CBDTab, ElementCriteria.IsVisible); ClickAndWaitBasePage(CBDTab); LP.WaitUntil(TimeSpan.FromSeconds(60), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } } } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); } return(null); }
/// <summary> /// Enters text in the username and password field, clicks the login button, then waits for the URL /// of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> public dynamic LoginAsExistingUser(UserUtils.UserRole role, string userName, string password) { // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding this if statements here because sometimes the graph doesnt appear after we login. It only happens about 5 percent of the time, // so DEV is not looking into it. So if the graph does not appear, then we will navigate to the already loaded page again if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Navigation.GoToLearnerPage(Browser); LP.WaitUntil(TimeSpan.FromSeconds(30), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.PD: CBDProgDirectorPage PD = new CBDProgDirectorPage(Browser); PD.WaitForInitialize(); return(PD); case UserUtils.UserRole.PGD: CBDProgDeanPage page = new CBDProgDeanPage(Browser); page.WaitForInitialize(); return(page); case UserUtils.UserRole.CUPER: MyDashboardPage PERCUMyDashboardPage = new MyDashboardPage(Browser); PERCUMyDashboardPage.WaitForInitialize(); PERCredentialStaffPage CP = PERCUMyDashboardPage.ClickAndWaitBasePage(PERCUMyDashboardPage.PERAFCTab); return(CP); case UserUtils.UserRole.CSDiploma: DiplomaClinicalSupervisorPage CSP = new DiplomaClinicalSupervisorPage(Browser); CSP.WaitForInitialize(); return(CSP); case UserUtils.UserRole.CUDiploma: MyDashboardPage DiplomaCUMyDashboardPage = new MyDashboardPage(Browser); DiplomaCUMyDashboardPage.WaitForInitialize(); DiplomaCredentialStaffPage DCUP = DiplomaCUMyDashboardPage.ClickAndWaitBasePage(DiplomaCUMyDashboardPage.MyDiplomaTab); return(DCUP); case UserUtils.UserRole.DDDiploma: DiplomaDirectorPage DD = new DiplomaDirectorPage(Browser); DD.WaitForInitialize(); return(DD); case UserUtils.UserRole.FOMDiploma: DiplomaFacOfMedicinePage FOMP = new DiplomaFacOfMedicinePage(Browser); FOMP.WaitForInitialize(); return(FOMP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.REF: PERRefereePage PERRP = new PERRefereePage(Browser); PERRP.WaitForInitialize(); return(PERRP); case UserUtils.UserRole.ASRPER: PERAssessorPage AP = new PERAssessorPage(Browser); AP.WaitForInitialize(); return(AP); case UserUtils.UserRole.ASRDiploma: DiplomaAssessorPage DAP = new DiplomaAssessorPage(Browser); DAP.WaitForInitialize(); return(DAP); } return(null); }
/// <summary> /// Logs out of the current user only if a user is currently logged in, enters text in the username and password field, /// clicks the login button, then waits for the URL of the Dashboard page to load /// </summary> /// <param name="role">Either "learner", "observer", "program admin", etc.</param> /// <param name="userName"></param> /// <param name="password"></param> /// <param name="newUser">true or false, depending on if it is a new user or not</param> public dynamic LoginAsNewUser(UserUtils.UserRole role, string userName, string password) { IWebElement acceptBtn = null; // Login with a valid user UserNameTxt.Clear(); PasswordTxt.Clear(); UserNameTxt.SendKeys(userName); PasswordTxt.SendKeys(password); PasswordTxt.SendKeys(Keys.Tab); ClickAndWait(LoginBtn); // For some reason, the Selenium click fails to make the RCP page login, it instead stays at the login page. // This happens maybe 5% of the time. So we will add a try catch block here to click the login button // again if it fails try { acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, TimeSpan.FromSeconds(10), ElementCriteria.IsVisible); } catch { ClickAndWait(LoginBtn); acceptBtn = Browser.WaitForElement(Bys.LoginPage.iAcceptBtn, ElementCriteria.IsVisible); } Thread.Sleep(0300); acceptBtn.Click(); // Depending on the role of the user that we use, we need to wait differently and return different pages switch (role) { case UserUtils.UserRole.LR: CBDLearnerPage LP = new CBDLearnerPage(Browser); LP.WaitForInitialize(); // Adding this if statements here because sometimes the graph doesnt appear after we login. // It only happens about 5 percent of the time, so DEV is not looking into it. So if the // graph does not appear, then we will navigate to the already loaded page again if (Browser.FindElements(By.Id("EPAChart")).Count == 0) { Navigation.GoToLearnerPage(Browser); LP.WaitUntil(TimeSpan.FromSeconds(30), Criteria.CBDLearnerPage.EPAChartVisibleAndEnabledAndHasText); } return(LP); case UserUtils.UserRole.OB: CBDObserverPage OP = new CBDObserverPage(Browser); OP.WaitForInitialize(); return(OP); case UserUtils.UserRole.PA: CBDProgAdminPage PA = new CBDProgAdminPage(Browser); PA.WaitForInitialize(); return(PA); case UserUtils.UserRole.TraineePER: PERTraineePage PTP = new PERTraineePage(Browser); PTP.WaitForInitialize(); return(PTP); case UserUtils.UserRole.TraineeDiploma: DiplomaTraineePage DTP = new DiplomaTraineePage(Browser); DTP.WaitForInitialize(); return(DTP); case UserUtils.UserRole.MP: MyDashboardPage DP = new MyDashboardPage(Browser); DP.WaitForInitialize(); return(DP); } return(null); }