NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 셀레니움(Selenium)을 사용하지 않고, 웹앱 자동화 하는 방법. (탭 세션 가져오기)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 업무 자동화 RPA 매크로를 제작하다보면 셀레니움(Selenium)을 사용하는게 가장 쉽고 개발하기가 편리합니다. 하지만, 셀레니움 자동화를 사용할 수 없는 환경들이 존재하는데요. 이런 경우에는 직접 웹클라이언트(WebClient)를 사용해서 수동으로 처리해야 합니다. 엔터프라이즈급 웹앱을 개발 해보신 분들은 아시겠지만, 로컬호스트 개발 및 테스트 환경에서 웹클라이언트를 사용하면 TLS/SSL 보안 채널을 생성할 수 없습니다. 그래서, 아래와 같이 우회해서 사용하고 있습니다.

    로컬호스트의 TLS/SSL 오류가 무시되도록 활성화하는 방법 ]

     

    이외에 개발 환경에서는 아래와 같이 설정할 수 있습니다. 아래 코드는 C# 입니다. 안전하지 않은 코드 경고는 try ~ catch에서 ServerCertificateValidationCallback 오류를 return true로 설정해야 합니다. 참고로, 모든 인증서 유효성 검사 오류를 무시하기 때문에 예외를 캐치할 수 없습니다.

    ServicePointManager.Expect100Continue = true;                
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

     

    이 글의 핵심은 셀레니움을 사용하지 않고, 웹앱 자동화 매크로를 만드는 겁니다. 따라서, 웹브라우저를 실행하고 해당 웹브라우저에 디버깅을 붙여서 세션을 가져오는겁니다. 세션을 유지해야 일관성 있게 로직을 처리할 수 있습니다. 엔지엠 매크로를 실행하고, 새로운 스크립트를 추가하세요.

    cnOuw3h.gif

     

     

    아래와 같이 [ 커멘드 ] 액션을 추가하세요.

    IYIQrzT.png

     

     

    아래 내용을 참고하셔서 구글 크롬 웹브라우저를 디버깅 모드로 실행합니다. 아래와 같이 원격 디버깅을 설정할 수 있습니다. 아마도~ 자바(JAVA) 서버 개발을 하셨던 분들은 익숙할겁니다. 이클립스에서도 지원하고 대부분의 개발자들이 사용하고 있으니까요.

    • 프로세스 이름: C:\Program Files\Google\Chrome\Application\chrome.exe
    • 파라메터: --remote-debugging-port=2023

    oDCGaW7.png

     

     

    매크로를 실행하면 구글 크롬 웹브라우저 원격 디버깅이 설정된 상태로 실행됩니다. 아래와 같이 [ 웹서비스 ] 액션을 추가하세요.

    xFamv1o.png

     

     

    아래와 같이 설정하세요.

    • API 주소: http://localhost:2023/json
    • 콘텐츠 처리 옵션: Json

    ymZnRNb.png

     

     

    매크로를 실행하고, 응답 결과를 클릭 해보세요. Xxml Json 시각화 도구가 실행됩니다. 여기서 중요한 내용은 type입니다. 우리가 웹앱 자동화를 수행할 곳은 page이기 때문입니다. 이외에 디버거에서 제공해주는 다양한 엘리먼트들이 존재합니다. 이 부분들은 다음에 자세하게 알아보기로 하고, 세션을 유지하기 위해 필요한 정보들을 어떻게 처리해야 하는지 확인 해보도록 하겠습니다.

    wdck3Ar.png

     

     

    많은 정보들이 있지만, 탭을 식별하기 위해서 id 값이 필요합니다. 이 아이디 값으로 연결 목록을 만들고 웹클라이언들을 관리할 수 있게 해야 합니다. 이 부분은 커스텀 모듈로 만들어서 List안에 담아두고 사용하는게 편리합니다. 엔지엠 매크로 내부적으로 웹클라이언트 또는 웹소켓클라이언트를 관리할 수 있는 기능을 추가하고 있는데요. 이렇게 하더라도 Json을 Parsing해서 정보를 추출하는건 직접 만들어야 합니다. 상황에 따라 파싱룰이 다르기 때문입니다. 이 부분을 공통적으로 적용하기는 쉽지 않은 문제거든요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.