-
브라우저 자동화(by 셀레니움) 4 - 셀레니움 테스트 랩퍼 코드c# Winform 개발/웹 자동화 2022. 9. 30. 13:36
테스트 하면서 필요했던 기능들 간단하게 Wrapper 만들어봄
/* * * test wrapper by bw50233 * */ internal class SeleniumWrapper { static int sleepMS = 300; // 엘리먼트가 있는지 체크. 대기용도로 씀 public static bool SelectElement(WebDriverWait wait, string xPath) { bool result = false; try { IWebElement elementID = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))); result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 버튼 클릭 public static bool ButtonClick(WebDriverWait wait, string xPath) { bool result = false; try { IWebElement element = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))); element.Click(); Thread.Sleep(sleepMS); // 빼도 되는지 확인 필요 result = true; } catch (Exception ex) { Console.WriteLine(ex); throw new Exception(); // Exception 발생 후 프로그램 종료시키고자 추가 } return result; } // Input에 텍스트 입력 public static bool ClearAndInputText(WebDriverWait wait, string xPath, string text) { bool result = false; try { IWebElement elementID = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))); elementID.Clear(); elementID.Click(); Thread.Sleep(sleepMS); elementID.SendKeys(text); // 텍스트가 채워질때까지 대기 for (int i = 0; i < 50; i++) { if (elementID.GetAttribute("value").Length > 0) break; Thread.Sleep(10); } result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 콤보박스 선택 public static bool SelectCombobox(WebDriverWait wait, string xPath) { bool result = false; try { IWebElement elementID = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))); elementID.Click(); Thread.Sleep(sleepMS); result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 윈도우 이동 public static bool SwitchWindow(ChromeDriver driver, string handle) { bool result = false; try { driver.SwitchTo().Window(handle); result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 프레임 이동 public static bool SwitchFrame(ChromeDriver driver, WebDriverWait wait, string xPath) { bool result = false; try { if(xPath.Length <= 0) // 첫번째 프레임으로 이동 { driver.SwitchTo().DefaultContent(); } else { var iFrame = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xPath))); driver.SwitchTo().Frame(iFrame); } result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 프레임 이동 public static bool SwitchFrame(ChromeDriver driver, IWebElement elementFrame) { bool result = false; try { driver.SwitchTo().Frame(elementFrame); result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 메인핸들 얻기 public static string GetMainHandleByTitle(ChromeDriver driver, string mainTitle) { string result = ""; try { foreach (string handle in driver.WindowHandles) { IWebDriver windowDriver = driver.SwitchTo().Window(handle); if (windowDriver.Title.Contains(mainTitle)) { result = handle; } } } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 메인 윈도우외 다른 팝업 윈도우 닫기 public static bool OtherCloseByTitle(ChromeDriver driver, string mainTitle) { bool result = false; try { foreach (string handle in driver.WindowHandles) { IWebDriver windowDriver = driver.SwitchTo().Window(handle); if (!windowDriver.Title.Contains(mainTitle)) { windowDriver.Close(); } } result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } // 얼럿 자동 확인 public static bool AcceptAlert(ChromeDriver driver) { bool result = false; try { driver.SwitchTo().Alert().Accept(); result = true; } catch (Exception ex) { Console.WriteLine(ex); } return result; } }
300x250'c# Winform 개발 > 웹 자동화' 카테고리의 다른 글
브라우저 자동화(by 셀레니움) 5 - 호출 코드 (0) 2022.09.30 브라우저 자동화(by 셀레니움) 3 - 자동화 테스트 (0) 2022.09.30 브라우저 자동화(by 셀레니움) 2 - 정리 (0) 2022.09.27 브라우저 자동화(by 셀레니움) 1 - 시작 전 잡담 (0) 2022.09.27