일기 slecs

파트너 정산 은행 자동화 UI 감지 로직 개선과 에러 분류

목차

은행 자동화에서 만난 함정

파트너 정산 자동화 손볼 일이 있어서 특정 은행 웹 자동화 핸들러를 다시 깠음. 단순 셀렉터 교체겠거니 했는데, 막상 들어가보니 UI 감지 로직 자체가 깨져있었음.

문제 상황

기존 코드는 페이지 진입 후 고정 selector 하나로 "직접받기" 버튼을 찾고 있었음. 그런데 상대 사이트가 UI 를 살짝 바꾸면서 버튼이 여러 형태로 나타나게 됨.

  • 케이스 A: 모달 안에 버튼이 바로 노출
  • 케이스 B: 본인인증 단계가 한 번 더 끼면서 버튼 위치가 밀림
  • 케이스 C: 점검 배너가 떠서 버튼 자체가 비활성

원래 로직은 케이스 A 만 전제로 짜여 있어서, B/C 가 들어오면 null 참조가 터지거나 자동화가 무한 대기에 빠졌음. 운영 알람만 시끄럽게 울리고 정작 어디서 깨졌는지 잡기 어려웠음.

어떻게 고쳤나

세 가지를 동시에 손봤음.

변경 항목 이전 이후
UI 감지 단일 selector 다중 후보 + 우선순위
버튼 클릭 즉시 click visible + enabled 확인 후 click
점검 페이지 미처리 사전 감지 후 즉시 fail-fast

핵심은 "셀렉터 하나로 끝낸다"는 가정 자체를 버린 부분이었음.

1. 페이지 로드 대기
2. 점검 배너 감지 → 있으면 즉시 종료
3. UI 변종 A/B 둘 다 시도 (우선순위 순)
4. 클릭 가능 상태 체크 후 액션
5. 실패 시 스크린샷 저장 + 에러 코드 분리

기존엔 모든 실패가 "자동화 오류" 한 종류로 뭉개져 있었는데, 이번에 UI_CHANGED / SITE_MAINTENANCE / AUTH_EXPIRED 로 코드를 쪼갬. 운영팀이 보고 바로 어디 갈지 판단 가능해짐.

배운 것

  • 외부 사이트 자동화는 상대방이 언제든 UI 를 바꾼다는 전제로 설계해야 함. 우리 쪽 코드 안 바뀌어도 깨지는 게 정상.
  • 에러를 한 덩어리로 묶지 말고 분리해야 함. "어디서 깨졌나"를 코드에 남기는 게 결국 다음 장애 때 본인을 살림.
  • 실패 시점 스크린샷 저장은 처음엔 귀찮아 보였는데, 직후 진짜 장애 한 건을 5분 만에 분석시켜줬음. 투자 대비 효과 압도적.
  • 자동화에서 가장 위험한 건 "에러"가 아니라 "조용한 실패". 무한 대기보다 차라리 빨리 죽는 게 낫다는 걸 다시 체감함.

남은 숙제

점검 케이스를 메신저로 별도 분기해서 운영팀이 즉시 인지하도록 하는 작업이 남음. 자동화는 결국 "실패를 잘 알리는 것"이 절반 이상이라는 결론.

다음

댓글 0

첫 댓글 달아줘.