드물게 Find Children을 통해 element값을 가져와서 동적으로 처리해야 하는 케이스가 발생한다.

그 과정에서 기준 요소를 찾고 규칙적인 값을 Datascraping으로 가져올 수 있다.

다만 규칙에 반하는 예외요소들이 있을 수 있다.

가령 호텔의 후기를 가져오는데 어떤 후기는 특정 값이 채워져 있고 어떤 후기는 안 채워져 있어서

후기 폼이 달라진다고 가정하자.

이 경우 2가지 접근법이 있을 수 있다.

1. Datascraping을 경우의 수만큼 n번 나눠서 하고 결과물을 merge한다.

2. 각 element를 쪼개면서 조건을 따지고 가져온다.

2번으로 하고 싶은 경우 먼저 Find Children으로 element ienumerable을 가져오고,

각각의 element의 속성값을 가져와야 한다.

단, 이 방식은 VB.NET으로만 되는 것으로 보인다. (C# 템플릿에서는 해당 method가 없음)

[VB.NET] 에서의 방식

assign을 활용해 다음과 같이 설정

sValue = DirectCast(uiElementVar.Get("text"), String)

[Get의 ToString이 어떤 형태를 overide해야 할지를 모르기 때문에 에러가 난다. 예를 들어 속성값중 boolean인 value도 있고 region 객체가 나올 수도 있다. 그래서 DirectCast를 했는데 스타일에 따라 object로 일단 받아놓고 그 값을 ToString해서 쓸 수도 있다.]

[C#]에서의 방식

invoke code를 통해 다음과 같이 설정

Arguments에 in으로 uielement 변수, out으로 value를 받을 string 변수 설정

string elementText = uielementVar.Get("innertext").ToString();
sResult = elementText;

 

이때 get을 해오는 기전은 DataScraping이 하는 것과 동일하다.

(Find Children을 할 때 이미 한번에 해당 데이터 아래의 요소들을 한번에 다 긁어온 거로 볼 수 있다.)

따라서 각각 get Text를 하는 것에 비해 속도가 월등히 빨라진다.

복잡한 조건으로 가져오는 게 아니라면 웬만하면 Datascraping으로 가져오는 것을 권장한다.

https://jnaul.tistory.com/333

 

[Uipath] Data Scraping에 대해[2023-03-02 수정]

1. DataScraping이란? Uipath의 강력한 장점 중 하나는 RPA의 Main Demand에서 많은 비중을 차지하는 '웹크롤링'을 코딩하는 생산성이 매우 좋다는 점이다. 그걸 가능하게 해주는 핵심적인 기능이 Data Scrapin

jnaul.tistory.com

 

※ aaname같이 uipath에서 임의로 붙여주는 것은 못 가져오는 케이스도 있어 보인다. 별 문제가 없으려면 최대한 element 내부의 고유 속성 기준으로 가져와야 될 거 같다.

※ 기왕 나눠서 가져오고 있다면 값에 대한 정합성 체크를 넣어주는 것을 추천드린다. 그러지 않고는 이런 구조로 가져갔을 때의 장점이 많이 사라진다.

+ Recent posts