[Java] 매크로, Selenium과 Robot

이도형·2026년 1월 5일

Java Selenium

웹 브라우저의 동작을 자동화하기 위해 설계된 도구

특징

  • WebDriver API를 통해 브라우저의 DOM에 직접 접근
  • JavaScript 렌더링 페이지에 유리
  • Chrome, Firefox 등 다양한 브라우저 지원

장점

  • 동적 콘텐츠 처리 : JavaScript로 생성되는 동적 페이지를 실제 브라우저로 렌더링하여 크롤링 가능
  • 직관적 디버깅 : 브라우저 실행 과정을 눈으로 확인 가능
  • 풍부한 API : findElement(), click(), sendKeys()등 웹 요소 제어하는 메서드가 많음
  • 안정적인 요소 선택 : DOM 기반으로 요소를 찾기 때문에 화면 해상도나 위치 변경에 영향을 받지 않음

단점

  • 느린 실행 속도 : 실제 브라우저를 구동하여 리소스를 많이 차지하고 속도도 느림
  • 웹 한정 : 브라우저 외부 (윈도우 팝업, 파일 업로드 창, 바탕화면 아이콘 등) 제어 불가능
  • 높은 학습 곡선

예시

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumTest {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        
        try {
            driver.get("https://www.example.com");
            
            // 로그인 버튼 클릭
            driver.findElement(By.className("lg_local_btn")).click();
            Thread.sleep(500);
            
            // 아이디/비밀번호 입력
            driver.findElement(By.id("id")).sendKeys("test1234");
            driver.findElement(By.id("pw")).sendKeys("password123");
            
            // 로그인 제출
            driver.findElement(By.className("btn_global")).submit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            driver.quit();
        }
    }
}

Java Robot Class

Java 표준 라이브러리에 포함된 도구로 OS 수준에서 키보드와 마우스 이벤트 시뮬레이션

특징

  • java.awt.Robot 클래스는 화면 좌표 기반
  • 절대 좌표(x, y) 기준으로 마우스를 이동 mouseMove()
  • 키보드 입력을 생성하는 방식으로 작동

장점

  • 범용성 : Selenium이 접근 불가능한 OS 팝업, 파일 다이얼로그, 데스크톱 앱 제어 가능
  • 간단한 구현 : 키보드/마우스 이벤트를 생성하는 API가 단순하여 빠르게 구현 가능
  • 경량 : 브라우저 구동 없이 입력 이벤트만 생성하므로 리소스 사용량이 적음

단점

  • 좌표 의존성 : 화면 해상도나 창 위치 변경에 민감
  • 낮은 안정성 : 요소 식별 불가능
  • 제한적 활용 : 테스트 자동화보다는 데모나 특수한 시스템 작업에만 적합

예시

import java.awt.*;
import java.awt.event.InputEvent;

Robot robot = new Robot();
robot.delay(2000);
robot.mouseMove(500, 300); // (500, 300) 좌표로 이동
robot.delay(2000);

robot.mousePress(InputEvent.BUTTON1_MASK); // 마우스 클릭
robot.delay(200);
robot.mouseRelease(InputEvent.BUTTON1_MASK); // 클릭 해제

결론

외부 라이브러리가 사용 불가능한 환경이라 어쩔수 없이 Robot 매크로를 사용했다.
하지만, 경량화를 위해 데모나 특수 시스템 작업을 위해 Robot 매크로Selenium이 유리한 부분이 있다는 것을 알게 되었다.

profile
열심히 살고 싶습니다! 일하고 싶습니다 :)

0개의 댓글