/// <summary> /// Kill a pocess given the name of the process /// The process is killed if the pocess is longer than 3 seconds /// </summary> /// <param name="nameOfProcessToKill"></param> public static void killProcessByNames(string nameOfProcessToKill) { SAFEBBALog.Debug(CommonUtilities.GetClassAndMethodName(), nameOfProcessToKill); string[] nameOfProcessToKillList = nameOfProcessToKill.Split(','); foreach (string nameOfProcess in nameOfProcessToKillList) { try { foreach (Process proc in Process.GetProcessesByName(nameOfProcess)) { DateTime procStartTime = proc.StartTime; DateTime dateNow = DateTime.Now; long diff = (long)(dateNow - procStartTime).TotalMilliseconds; //Kill the process if longer than 3 secunds if (diff > 3000 && !(proc.ProcessName.ToLower().Contains("excel"))) { proc.Refresh(); proc.Kill(); } if (proc.ProcessName.ToLower().Contains("excel") && diff < 3000) { proc.Refresh(); proc.Kill(); } } } catch (Exception e) { SAFEBBALog.Warning("The process, " + nameOfProcessToKill + " could not be killed. See Exception: \n" + e); } Thread.Sleep(1000); } }
/// <summary> /// Get the web element according to a given page name, frame name and location(identification method for the element) /// /// </summary> /// <param name="pageNameToSwitchTo"></param> /// <param name="frameNameToSwitchTo"></param> /// <param name="by"></param> /// <returns></returns> private IWebElement waitAndGetElement(string pageNameToSwitchTo, string frameNameToSwitchTo, params By[] by) { Exception exception = null; SAFEBBALog.Debug(CommonUtilities.GetClassAndMethodName()); String errorMessage = "No Element Was Found by: " + by[0] + "\n EXCEPTION THROWN: "; IWebElement webElement = null; if (waitForAjax) { //Check the status of the page by executing the javascipt, document.status, to see if the page is fully loaded //This check makes the system slower but minimize the risk of failure javaScriptCalls.WaitForAjaxCallToFinish(); } //Max time to wait for an element long maxTimeToWait = CommonUtilities.GetCurrentTimeMillis() + CommonUtilities.GLOBAL_TIMEOUT_TIME_IN_MSEC; while (webElement == null && maxTimeToWait > CommonUtilities.GetCurrentTimeMillis()) { try { //Modify the diver by switching page and frame if needed // driver = SwitchToFrameOrWindowByName(driver, pageNameToSwitchTo, frameNameToSwitchTo); if (by.Length == 1) { var webElementList = driver.FindElements(by[0]); int nrOfFoundElements = webElementList.Count; if (nrOfFoundElements > 1) { foreach (IWebElement webElementFromList in webElementList) { SAFEBBALog.Warning("Tag name element: " + webElementFromList.TagName); SAFEBBALog.Warning("Text element: " + webElementFromList.Text); } errorMessage = "TOO MANY Elements Was Found by: " + by + "\n EXCEPTION THROWN: "; //throw new Exception(); } //Create a WebDriver wait to wait for the element to show on the page var webDriverWait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(CommonUtilities.GLOBAL_TIMEOUT_TIME_IN_MSEC / 1000), TimeSpan.FromMilliseconds(500)); webElement = webDriverWait.Until(ExpectedConditions.ElementExists(by[0])); } else { var webElementList = driver.FindElements(by[0]); string byLocator = by[1].ToString().ToLower().Replace(" ", ""); if (byLocator.Contains("by.tagname")) { foreach (IWebElement webElementFromList in webElementList) { string webElementTagName = "by.tagname:" + webElementFromList.TagName.ToLower().Replace(" ", ""); SAFEBBALog.Debug(CommonUtilities.GetClassAndMethodName(), "webElementTagName: " + webElementTagName, "byLocator: " + byLocator); if (byLocator.Contains(webElementTagName)) { webElement = webElementFromList; break; } } } else if (byLocator.Contains("##")) { int startIndex = by[1].ToString().IndexOf("#") + 1; int endIndex = by[1].ToString().IndexOf("##") - startIndex; string s = by[1].ToString().Substring(startIndex, endIndex); int elementIndex = int.Parse(by[1].ToString().Substring(startIndex, endIndex)); webElement = webElementList[elementIndex]; } } } catch (Exception e) { exception = e; Thread.Sleep(500); } } if (webElement == null) { throw new DriverServiceNotFoundException(errorMessage + (exception == null? "":exception.ToString())); } return(webElement); }