캘린더 질문

안녕하세요.
Uipath에 입문한지 얼마되지 않은 초보입니다.

화면 캡처 2022-03-18 151827

위 사진처럼 현재 월의 28일을 클릭하려고 click text를 사용해서 28을 클릭하면 저번 달의 28이 먼저 있어서 저번 달의 28을 클릭해버립니다.
이번 달 28을 클릭할 방법이 있을까요?

감사합니다.

안녕하세요.
보통은 UI Explorer로 유니크한 Element 주소를 잡아야되는데,

위와 같은 상황이라면
케이스별로 나눠야될꺼 같아요.
한 화면에 2개의 28일이 있을 경우, 보통 월말이기 때문에 2번째 28일이 idx=‘2’ 로 잡힐 것이고
월에 하나의 28일만 있다면, idx='1’이거나 없을 수도 있구요.

그래서 처음에 find element 나 element exists 으로 idx=‘2’ 가 있으면 그것을 먼저 클릭하고
만약에 idx='2’가 없으면 다음 조건으로 첫번째 28을 클릭해라 라는 조건을 만들면 될꺼 같아요.
도움 되셨으면 합니다. :slight_smile:

답변 감사합니다.
사실 제가 Now.Day.Tostring 함수를 이용해서 현재의 날짜를 선택하려고 하는 중입니다.
이 함수를 이용하면서 idx='2’를 선택할 수 있는 방법이 있나요?

질문의 의도가
element의 Selector에 함수와 string 값을 같이 쓸 수 있냐는 질문일까요?
Selector 보시면 “” 로 string 값을 표시하는데 중간에 변수를 넣고 싶으면

"<~~~~"+Now.Day.Tostring+"~~>"

이런식으로 표시하면 됩니다.

그리고 매일 값이 바뀐다고 하면 위에 설명드린 부분에서 케이스를 잘 나누셔야겠네요.
28일만이 문제가 아니라 다른 날짜들도 다 케이스 정리가 필요하겠네요.
위에 이미지는 구글 캘린더인가요?

현재 날짜 같이 실행 시간 등에 따라 동적으로 변하는 값을 사용하고 싶은 경우에는
셀렉터 편집창에서 셀렉터 속성값에 {{변수명}}을 기입하시면 됩니다.
셀렉터 편집창에서 우클릭으로 변수를 찾아서 넣어줄 수도 있습니다.
변수 사용이라고 인식되면 (x) 아이콘이 붙으면서 하단 이미지처럼 나타납니다.

image

조심해야 할 것은 변수명만 되고 식은 안됩니다. 즉 {{Today.Day.ToString}} 이렇게는 안됩니다. 쓰기 전에 반드시 Assign이나 기본값으로 변수에 저장해서 변수명으로만 사용해주세요.

추가적으로 idx와 관련해서는 현재 셀렉터 값이 idx라는게 보이지 않더라도 직접 셀렉터 편집창에 idx=‘2’ 같이 타이핑 해주면 비슷한 패턴의 n번째 매칭 요소를 자동으로 찾습니다.

아래는 어디 적당한 날짜 선택 예제 사이트를 사용해서 idx 속성 사용을 보여드리는 예시입니다.


다만 idx 속성값 같은 경우에는 질문 주신 캘린더 정도는 괜찮겠지만, 특히 복잡한 화면에서의 3 이상의 idx 값 사용은 개인적으로 별로 권장하지 않습니다. (엉뚱한 요소가 잡힐 수 있습니다.)
되도록이면 다른 사용하기 좋은 속성 값이 있는지 먼저 관찰해보세요.

UiExplorer를 열어서 확인해보면 ‘화면에 표시’ 버튼으로 자동으로 잡아준 값 외에 현재 사용하진 않았지만 이용할 수 있는 다른 속성들 목록을 확인할 수 있습니다. 해당 속성을 체크하면 바로 셀렉터에 추가됩니다. 반대로 선택된 항목 속성 값을 셀렉터에서 뺄 수도 있습니다.
질문 주신 케이스에서는 월로 보이는 항목이 있다면 해당 속성을 활용하는 것이 더 바람직합니다.
(3월 28일을 찍으면 3이 나오고 4월 28일을 찍으면 4가 나오거나 하는 패턴의 속성값)

답변 감사합니다.
idx = '2’를 넣어보니 두번째로 있는 숫자가 잘 선택됩니다.
오늘 날짜를 구하려고 Now.Day.ToString을 변수에 넣었습니다.
그런데 지정한 변수를 넣었는데 사진처럼 범위에 없다고 나옵니다.
지정한 변수를 Write Line으로 돌리면 오늘의 일인 21이 잘 나옵니다.
혹시 몰라서 기본 값에 넣어도 사진처럼 나왔습니다.
제가 selector를 많이 만져보지 않아서… 변수 설정을 잘못한 것인지 궁금합니다.
화면 캡처 2022-03-21 165139

답변 감사합니다.
넵 구글캘린더입니다.
제가 selector를 많이 만져보지 않아서 그런데 혹시 말씀해주신 "<~" + Now.Day.Tostring+">"변수를 aaname 부분에다가 넣는건가요?

저래도 값에 이상이 없다면 잘 동작 합니다. ㅎㅎ

저런 방법으로 변수를 사용한 경우 유효성 검사는 하단 변수 탭 기본값에 들어간 값으로 판단하게 됩니다.
문제는 그 기본값도 하드코드된 기본 데이터타입("21"이나 21)이 아닌 Today.Day 같이 식으로 값이 들어간 경우에는 유효성 검사가 원하는대로 작동 안하는 한계가 있습니다… 이건 현재 버전에선 어쩔 수 없네요.

개인적으로는 aaname=‘21’ 같이 임의 값 하나 넣어서 유효성 검사 해본 다음에 변수로 바꿔넣고 그다음 디버그 모드에서 엘리먼트 강조 표시 켜놓고 돌려봅니다.
엘리먼트 강조 표시를 켜놓고 디버그 모드로 실행하면 실행 중에 Click 같이 UI 자동화 액티비티에서 로봇이 어떤 엘리먼트를 찾았는지 빨갛게 표시해줍니다.
그때 이상이 없으면 변수 값 잘 받아왔고, 해당 변수 값 기준으로 엘리먼트를 잘 찾았다는 뜻이니 문제없습니다.

오류인줄 알았더니 아니었군요.
그대로 해봤더니 작동되네요.
감사합니다!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.