/// <summary> /// VerifyTabsInCostCenterPopUp verfies tabs in cost center popup /// </summary> /// <param name="driver"></param> /// <param name="reporter"></param> public static void VerifyTabsInCostCenterPopUp(RemoteWebDriver driver, Iteration reporter) { reporter.Add(new Act("Switch to cost center popup window")); reporter.Add(new Act("Click on each tab in the cost center popup window")); Selenide.SwitchToDefaultContent(driver); Selenide.SwitchToFrame(driver, Locator.Get(LocatorType.ID, "dlg_ifrm_search")); int index = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, "//div[@id='tab_ctrl']/ul/li")); for (int tab = 1; tab <= index; tab++) { Selenide.JS.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@id='tab_ctrl']/ul/li[{0}]/a/span", tab))); } }
/// <summary> /// ClickAllSubMenusInMenu method click the links in each menu of WebPortal /// </summary> /// <param name="driver"></param> /// <param name="reporter"></param> /// <param name="tabName">tabName</param> /// <param name="resultsPath">resultsPath</param> /// public static void ClickAllSubMenusInMenu(RemoteWebDriver driver, Iteration reporter, string resultsPath, string menu) { string subMenu = string.Empty, subMenuAttribute = string.Empty; int linksCountInEachMenu, linksCountInSubMenu, subMenuCount, subMenuCountInEachMenu, clickableLinksInEachMenu, linksCountInSubMenu1 = 0; //Clicks menu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]", menu))); //Number of submenu's in a menu //subMenuCountInEachMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath,string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li", menu))); subMenuCountInEachMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[normalize-space(text())='{0}']/following-sibling::ul/li", menu))); //Number of clickable submenu's in a menu linksCountInEachMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li/a[@onclick]", menu))); //Number of clickable submenu2's in a menu linksCountInSubMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li/a[@class='drop']/following-sibling::ul/li/a[@onclick]", menu))); //Total clickable links in a menu clickableLinksInEachMenu = linksCountInEachMenu + linksCountInSubMenu; reporter.Add(new Act(string.Format(@"Number of clickable links under <b>{0}</b> menu are: <b>{1}</b>", menu, clickableLinksInEachMenu))); for (subMenuCount = 1; subMenuCount <= subMenuCountInEachMenu; subMenuCount++) { subMenuAttribute = Selenide.GetElement(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a", menu, subMenuCount))).GetAttribute("onclick"); if (subMenuAttribute != null) { if (subMenuAttribute.Contains("PortalMenu") || subMenuAttribute.Contains("Schedule")) { subMenu = string.Empty; while (subMenu == null || subMenu == string.Empty) { //Clicks menu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]", menu))); subMenu = Selenide.GetText(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a", menu, subMenuCount)), Selenide.ControlType.Label); } reporter.Add(new Act(String.Format("Click submenu item <b>{0}</b> under <b>{1}</b> menu", subMenu, menu))); //Clicks submenu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a", menu, subMenuCount))); AcceptOrDissmissAlertIfPresent(driver, reporter); //Thread.Sleep(5000); Selenide.WaitForElementNotVisible(driver, Locator.Get(LocatorType.ClassName, "dlg_spinner")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner1_img")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner2_img")); AcceptErrorMessageIfPresent(driver); if (Selenide.IsElementExists(driver, Util.GetLocator("Spinner1_img")) || Selenide.IsElementExists(driver, Util.GetLocator("Spinner2_img"))) { Thread.Sleep(5000); } //WaitUntilSpinnerDisappears(driver); CloseBrowserNewTab(driver); Selenide.Focus(driver, Locator.Get(LocatorType.XPath, string.Format(@"//td[@class='left']"))); //Clicks external applications ClickExternalApplicationMenus(driver, reporter, resultsPath); Thread.Sleep(500); } } if (subMenuAttribute == null) { string submenuname = string.Empty; while (submenuname == null || submenuname == string.Empty) { //Clicks menu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]", menu))); Thread.Sleep(250); submenuname = Selenide.GetText(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a/span", menu, subMenuCount)), Selenide.ControlType.Label); } reporter.Add(new Act(string.Format(@"Sub Menu Name is: <b>{0}</b>", submenuname))); //Clicks menu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]", menu))); //Clicks submenu1 Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a", menu, subMenuCount))); //Number of submenu2 in submenu1 linksCountInSubMenu1 = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/ul/li/a", menu, subMenuCount))); for (int eachSubLink = 1; eachSubLink <= linksCountInSubMenu1; eachSubLink++) { //Clicks menu Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]", menu))); //Clicks submenu1 Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/a", menu, subMenuCount))); string sublinkname = Selenide.GetText(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/ul/li[{2}]/a", menu, subMenuCount, eachSubLink)), Selenide.ControlType.Label); reporter.Add(new Act(String.Format ("Click submenu link " + "<b>" + "{0}" + "</b>" + " of " + "<b>" + "{1}" + "</b>" + " submenu under " + "<b>" + "{2}" + "</b>" + " menu", sublinkname, submenuname, menu))); //Clicks submenu2 Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='menu']/ul/li/a[contains(text(),'{0}')]/following-sibling::ul/li[{1}]/ul/li[{2}]/a", menu, subMenuCount, eachSubLink))); AcceptOrDissmissAlertIfPresent(driver, reporter); AcceptErrorMessageIfPresent(driver); Selenide.WaitForElementNotVisible(driver, Locator.Get(LocatorType.ClassName, "dlg_spinner")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner1_img")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner2_img")); WaitUntilSpinnerDisappears(driver); if (Selenide.IsElementExists(driver, Util.GetLocator("Spinner1_img")) || Selenide.IsElementExists(driver, Util.GetLocator("Spinner2_img"))) { Thread.Sleep(5000); } CloseBrowserNewTab(driver); ClickExternalApplicationMenus(driver, reporter, resultsPath); } } } }
/// <summary> /// ClickContentLinks method clicks the content links in the WebPortal /// </summary> /// <param name="driver"></param> /// <param name="reporter"></param> public static void ClickExternalApplicationMenus(RemoteWebDriver driver, Iteration reporter, string resultsPath) { int ExternalMenuCount, LinksCountInExternalMenu; bool IsExternalApplication; int NumberOfExternalMenu; int NumberOfSubmenuInExternalMenu; string LinkTextInExternalMenu; string ExternalMenuText; string submenu1 = string.Empty; //Checks for external application IsExternalApplication = Selenide.IsElementExists(driver, Locator.Get(LocatorType.XPath, "//div[@class='secmenu']/ul/li/a")); if (IsExternalApplication) { //Counts number of Menu's in external application NumberOfExternalMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, "//div[@class='secmenu']/ul/li/a")); for (ExternalMenuCount = 1; ExternalMenuCount <= NumberOfExternalMenu; ExternalMenuCount++) { //Clicks a menu in external application Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='secmenu']/ul/li[{0}]/a", ExternalMenuCount + 1))); Thread.Sleep(1000); ExternalMenuText = Selenide.GetText(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/a", ExternalMenuCount + 1)), Selenide.ControlType.Label); reporter.Add(new Act(string.Format(@"Click on <b>{0}</b> menu in the external application", ExternalMenuText))); Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format(@"//div[@class='secmenu']/ul/li[{0}]/a", ExternalMenuCount + 1))); NumberOfSubmenuInExternalMenu = Selenide.GetElementCount(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/ul/li", ExternalMenuCount + 1))); reporter.Add(new Act(string.Format (@"Menu count in each external application(Ex: SIM): <b>{0}</b>", NumberOfSubmenuInExternalMenu))); for (LinksCountInExternalMenu = 1; LinksCountInExternalMenu <= NumberOfSubmenuInExternalMenu; LinksCountInExternalMenu++) { Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/a", ExternalMenuCount + 1))); LinkTextInExternalMenu = Selenide.GetText(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/ul/li[{1}]", ExternalMenuCount + 1, LinksCountInExternalMenu)), Selenide.ControlType.Label); reporter.Add(new Act(string.Format (@"Click on " + "<b>" + "{0}" + "</b>" + " submenu In the external application", LinkTextInExternalMenu))); try { Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/a", ExternalMenuCount + 1))); Selenide.Click(driver, Locator.Get(LocatorType.XPath, string.Format (@"//div[@class='secmenu']/ul/li[{0}]/ul/li[{1}]/a", ExternalMenuCount + 1, LinksCountInExternalMenu))); AcceptOrDissmissAlertIfPresent(driver, reporter); AcceptErrorMessageIfPresent(driver); Selenide.WaitForElementNotVisible(driver, Locator.Get(LocatorType.ClassName, "dlg_spinner")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner1_img")); Selenide.WaitForElementNotVisible(driver, Util.GetLocator("Spinner2_img")); CloseBrowserNewTab(driver); Selenide.Focus(driver, Locator.Get(LocatorType.XPath, string.Format(@"//td[@class='left']"))); //Thread.Sleep(1000); } catch (Exception ex) { reporter.Add(new Act(string.Format (@"Error found in external application menu link: <b>{0}</b>", LinkTextInExternalMenu))); CommonPage.TakeScreenShotAndAttachToReport(driver, LinkTextInExternalMenu, resultsPath, reporter); } } } } }
/// <summary> /// GetMenuCount returns menu count /// </summary> /// <param name="driver"></param> /// <param name="reporter"></param> /// <param name="postion">Position of the link </param> /// <returns></returns> public static int GetMenuCount(RemoteWebDriver driver, Iteration reporter, string Application) { reporter.Add(new Act(string.Format(@"Get the menu count in {0}", Application))); return(Selenide.GetElementCount(driver, (Util.GetLocator("MenuGrid_lbl")))); }