웹자동화 (Playwright-java)-1

NOLEM·2021년 10월 1일
0

웹자동화

목록 보기
1/1
post-thumbnail

무지성 반복 작업을 해야 할 일이 있어서 자동화 도구를 알아보면서 여러 솔루션 중에 playwright를 선택했다. 일반적으로 selenium을 많이 사용하지만 playwright가 훨씬 직관적으로 설계되어 있어서 선택하였다. 만약, 웹을 벗어난 범용적인 테스트나 매크로가 필요하다면 rpa계열(openrpa, uipath 등)을 사용한다.

설정

가급적 공식문서(https://playwright.dev/java/docs/intro) 를 따르는 걸 추천하지만 여기서는 내 방식대로 작성하겠다.

gradle

	implementation 'com.microsoft.playwright:playwright:1.15.0'

기존에 selector에 predicate 코드가 동작하지 않는 버그가 있어서 반드시 최신버전인 1.15+를 사용한다.

papertrail

papertrail은 syslog를 원격에서 볼수 있는 일종의 로그 저장소이다. 다른 분석도구를 포함하여 고급기능이 많은 원격로깅 도구도 많지만 가입이나 설정이 간단하여 잠깐 쓰려고 선택했다.

롬복과 같은 도구는 취향껏 넣어주고, 자동화인만큼 간단한 원격 로깅을 설정한다.

    implementation 'com.papertrailapp:logback-syslog4j:1.0.0'

원격지 주소와 logback 연동 설정은 여기 에서 확인한다.

First script

간단한 테스트를 작성하여 동작을 확인한다.

 @Test
    public void 동작확인() {
        try (Playwright playwright = Playwright.create()) {
            Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(50));
            Page page = browser.newPage();
            page.navigate("http://playwright.dev");
            System.out.println(page.title());
        }
    }

Playwright는 autocloseble을 상속하고 있어서 try-resource 구문으로 자동 해제된다. 그리고 thread-safe하진 않으므로 주의한다.
위 예제를 설명하면 chromium을 사용하고 headless를 false로 하여 동작을 볼수 있게 했다.

위 예제에서는 selenium 대비 장점을 알 수가 없는데 앞으로 보게 될 과정에서 얼마나 더 직관적인지 비교가 가능할 것 같다.

다음

언제 정리해서 작성하지 모르겠지만 다음 편에서 다룰 내용.

  • 메타마스크를 예제로 extension 로드
  • 메타마스크를 예제로 extension 제어
  • selector 사용과 dom 제어
  • page wrapper class

0개의 댓글