ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 브라우저 자동화(by 셀레니움) 5 - 호출 코드
    c# Winform 개발/웹 자동화 2022. 9. 30. 14:10

     

     

    메인로드 할때 - 크롬드라이버 업데이트, 크롬드라이버 잔여 프로세스 제거

    private void MainFrm_Load(object sender, EventArgs e)
            {
                try
                {
                    // 프로세스 종료
                    foreach (Process process in Process.GetProcesses())
                    {
                        if (process.ProcessName.StartsWith("chromedriver"))
                        {
                            process.Kill();
                        }
                    }
    
                    // 크롬드라이버 업데이트
                    new ChromeDriverUpdater.ChromeDriverUpdater().Update(Application.StartupPath + "\\chromedriver.exe");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("구동 실패 : " + ex.Message);
                }
            }

     

     

     

    셀레니움 호출부 (앞부분만)

    				ChromeOptions options = new ChromeOptions();
            		ChromeDriverService driverService = ChromeDriverService.CreateDefaultService();
                    ChromeDriver driver = new ChromeDriver(driverService, options);
                
                    driver.Url = "http://www.iros.go.kr/";
                    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
                    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); // 대기시간 10초
                    string mainWindow = "";
    
                    try
                    {
                        // 메인 핸들 저장
                        mainWindow = SeleniumWrapper.GetMainHandleByTitle(driver, "인터넷등기소");
                        if (mainWindow.Length <= 0)
                        {
                            throw new Exception("메인 핸들 못찾음");
                        }
    
                        // 팝업창 닫기
                        SeleniumWrapper.OtherCloseByTitle(driver, "인터넷등기소");
                        SeleniumWrapper.SwitchWindow(driver, mainWindow);
    
                        // 로그인 정보 입력
                        SeleniumWrapper.ClearAndInputText(wait, "//*[@id='id_user_id']", "너의아이디");
                        SeleniumWrapper.ClearAndInputText(wait, "//*[@id='password']", "너의비밀번호");
                        SeleniumWrapper.ButtonClick(wait, "//*[@id='leftS']/div[2]/form/div[1]/ul/li[4]/a/img");
    
                        // 로그아웃 버튼 10체크
                        if (!SeleniumWrapper.SelectElement(wait, "//*[@id='leftS']/div[2]/div[1]/p[2]/a"))
                            throw new Exception("로그인 실패");
    
                        // 로그인 후 또 뜨는 팝업창 닫기
                        SeleniumWrapper.OtherCloseByTitle(driver, "인터넷등기소");
                        SeleniumWrapper.SwitchWindow(driver, mainWindow);
    
                        SeleniumWrapper.ButtonClick(wait, "//*[@id='gnb']/li[2]/h2/a"); // 등기신청
                        SeleniumWrapper.ButtonClick(wait, "//*[@id='Lcontent']/div[2]/div/ul/li[2]/a/img"); //
                        SeleniumWrapper.ButtonClick(wait, "//*[@id='id_wrt_cs_inq_area']/div[3]/button[1]"); // 신규작성
                    }

     

    300x250

    댓글

Designed by Tistory.