ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [UiPath 기초] 4. 셀렉터(Selector) - 1
    UiPath RPA/개념 및 기초다지기 2020. 1. 11. 16:42
    반응형
    그 누가 알았으랴! Daum이 실시간 검색어 서비스를 닫을줄이야 ㅠㅠ
    해당 예제는 Daum 실시간 검색어 서비스가 폐쇄된 관계로 더 이상 동작하지 않습니다.
    셀렉터에 대한 개념을 익히는 자료로 봐주시기 바랍니다.

     

    셀렉터는 UiPath와 다른 RPA 솔루션을 가르는 차이점이자 UiPath의 핵심 기능 중 하나입니다. 다른 RPA 시스템에선 Vision을 통해 선택해야하거나, 입력해야 하는 엘리먼트의 모양 일치도를 확인하고 조작을 한다면, UiPath는 해당 프로그램이나 웹의 구조를 확인하고, 엘리먼트가 전체 구조 중 몇번째 위치인지, 또는 어떤 엘리먼트의 자식노드(Child-node)인지, 또는 식별가능한 ID가 있다면 해당 ID로 식별하여 조작할 엘리먼트를 찾아냅니다.

    웹사이트나 웹 크롤링 관련 개발을 경험하신 분들이라면 html 문서의 구조와 유사하다고 보시면 되겠습니다.

     

    셀렉터의 구조(빨간색 부분)

     

     

    셀렉터에 의해 타게팅된 엘리먼트(빨간색 부분)

     

    부등호(<>)와 알수없는 문자들을 보니 벌써 숨이 막히는 것 같네요. 다행히 UiPath는 몇번의 클릭만으로 원하는 엘리먼트를 가리키는 셀렉터를 자동생성할 수 있도록 해줍니다. 어떻게 사용해야하는지 이번 실습에서 다뤄보겠습니다.

    아래 예제는 다음 실시간 검색어를 가져오는 예제입니다.

     

    1. 브라우저 열기

    다음 사이트로 이동하는 Open Browser 액티비티를 추가합니다.

     

    2. 순위별 검색어를 대입할 변수추가

    실시간 검색어의 각 순위별 검색어를 담기위한 변수를 선언합니다. 1순위부터 5순위만 담도록 하겠습니다.

     

    3. 중간확인

    1번째 단계를 생성한 후 디버그(F5)나 실행(Ctrl+F5)으로 사이트가 제대로 열리는지 확인해주세요.

     

    4. Get Text 액티비티 추가

    Click 액티비티 아래에 Get Text 액티비티를 추가합니다.

     

    5. 셀렉터 편집 실행

    '브라우저 내부에 엘리먼트 표시'를 선택합니다.

     

    6. 1순위 검색어 가져오기위한 셀렉터 편집

    실시간 이슈 검색어 1순위 항목을 선택합니다.

    * 만약 Daum페이지에서 뉴스가 아닌 다른 탭으로 넘어간상태라면 F2키를 누른 뒤, 뉴스탭을 다시 선택하시면 됩니다.

    셀렉터로 1순위 검색어 선택

    엘리먼트 선택화면에 오신것을 환영(?)합니다. 실무에 가장 많이 볼 화면이 될 것이므로 다음 단계 수행 전 찬찬히 확인해보는 시간을 가져보겠습니다.

    [ESC] : 엘리먼트를 선택하지 않고 취소합니다.

    [F2] : 3초동안 엘리먼트 선택이 무시됩니다. 만약 선택해야할 엘리먼트가 다른 프로그램에 의해 창 뒤에 가려진 경우나, 특정 사전작업을 수행해야 나타나는 엘리먼트를 선택해야할 때 유용합니다.

    [F3] : 마우스로 드래그하듯 선택합니다. 엘리먼트가 매우 작아 클릭이 어려울 경우 사용합니다.

    [F4] : UiPath에서 엘리먼트를 식별하는 기능을 구현하는데 사용하는 원형 UI 프레임워크 라이브러리를 변경합니다. 라이브러리에 대한 개념은 "[UiPath 기초] 2. 변수 - 2" 포스트 본문에서 확인해주세요.

     

    UI 프레임워크 라이브러리는 3가지가 존재합니다.

    - 기본값 : UiPath에서 자체 개발한 라이브러리입니다. 일반적으론 해당 라이브러리를 사용합니다.

    - Active Accessibility(AA) : 기본 라이브러리에서 선택되지 않고, MFC, VB6 버전과 같이 오래 전 개발된 프로그램의 엘리먼트를 선택해야할 경우 사용합니다.

    - UI Automation(UIA) : 기본 라이브러리에서 선택되지 않고, WPF와 같이 비교적 최근 도입된 UI 프레임워크 기반의 프로그램의 엘리먼트를 선택해야할 경우 사용합니다.

    선택이 완료된 모습

     

    7. 1순위 검색어를 Str_Rank1 변수에 대입하기

    Get Text 속성창에서 출력 값 속성에 Str_Rank1 변수명을 입력합니다.

     

    8. 가져오기 결과를 확인하기 위한 Log Message 액티비티 추가

    1순위 검색어를 잘 가져오는지 확인하기위해 Log Message 액티비티를 추가하고, 로그 레벨은 Info, 메시지는 1순위 변수명 Str_Rank1을 입력합니다.

    Log Message는 UiPath '출력' 창에 메시지를 표시하기위해 사용하는 액티비티입니다. 주로 디버그작업시 액티비티 중간중간에 넣어 중간결과를 확인할때 사용합니다.

     

    9. 2~5순위 추가

    1순위 추가작업과 동일하게 2~5순위 작업도 진행해주세요.

     

    10. 결과확인

    결과를 확인하기위해 F5키를 눌러주시면,

    응?

    이럴수가! 오류가 납니다. 왜 오류가 나는지 출력된 로그를 확인해봐야겠습니다.

    * 해당 오류는 직접 실습하신분들마다 다르게 나오거나, 일정시간동안은 오류없이 제대로 진행될 수도 있습니다.

    (제대로 진행되더라도, 엉뚱한 데이터를 가져올 수도 있습니다.)

     

    로그를 보니 UI 엘리먼트를 찾을 수 없다는 메시지와 함께 엘리먼트를 가리키는 셀렉터 문자열이 표시되었습니다. 셀렉터 문자열을 살펴볼까요?

    <webctrl aaname='1위 이혜성 ' idx='1' parentid='mArticle' tag='DIV' />

    뭘 의미하는건진 잘 모르겠지만 대충 오류날만한 이유는 알 것 같습니다. 실시간 검색어는 말그대로 그시간에 검색량이 가장 많은 순서로 정렬하여 보여주는 기능인데, 해당 포스트와 함께 예제를 만드는 시점일때야 1위가 '이혜성' 이었겠지만, 직접 실습하신 분들이나 예제를 다운받아 실행하신 분들의 시간대에는 1위가 다른 단어일 것입니다.

     

    그럼 이대로 포기해야 할까요? 당연 아니죠

    다음 시간에는 셀렉터 고쳐서 원하는 결과를 제대로 수집하는 방법을 진행하도록 하겠습니다.

     

    4_셀렉터_1.zip
    0.06MB

    반응형

    댓글

Designed by Tistory.