okmacro

홈 › 활용 사례 › 웹 양식에 같은 내용 100번 넣기

웹 양식에
같은 내용 100번 넣기

사내 그룹웨어나 거래처 포털의 등록 양식은 대개 칸이 예닐곱 개입니다. 100건을 넣으려면 같은 칸을 700번 누르고, 같은 순서로 700번 입력합니다. 변하는 것은 값뿐이므로 표 반복 으로 돌릴 수 있습니다. 다만 웹 화면은 업무 프로그램보다 자리가 잘 흔들립니다 — 그 부분을 어떻게 피하는지가 이 글의 본론입니다.

상황 — 칸 여섯 개짜리 등록 양식

브라우저로 여는 등록 화면이 있습니다. 칸은 위에서부터 품목명, 규격, 수량, 단가, 납기일, 비고 여섯 개이고, 맨 아래에 등록 버튼이 있습니다.

등록할 목록은 엑셀에 있습니다. 한 줄에 25초쯤 걸리니 100줄이면 40분이 넘고, 중간에 한 칸을 건너뛴 줄이 몇 개 생깁니다. 그 몇 줄을 찾아내는 데 또 시간이 듭니다.

여기서 매번 똑같은 것은 칸의 순서와 등록 버튼을 누르는 동작입니다. 다른 것은 여섯 칸에 들어가는 글자뿐입니다.

웹 양식이 특히 잘 깨지는 이유

첫째, 스크롤이 있습니다. 창 크기가 조금만 달라져도 양식 전체가 위아래로 밀립니다. 어제 잡아 둔 좌표가 오늘은 다른 칸을 가리킵니다.

둘째, 화면 위쪽에 알림 띠가 생깁니다. "저장되었습니다" 같은 줄이 한 번 뜨면 그 아래 내용이 전부 수십 픽셀씩 내려갑니다. 그 줄이 사라지면 다시 올라옵니다.

셋째, 등록이 끝나는 시점이 일정하지 않습니다. 서버 응답과 화면 다시 그리기가 매번 다르므로, 고정 지연으로 맞추면 빠른 날에는 시간을 버리고 느린 날에는 어긋납니다.

클릭 대신 Tab 으로 옮겨 다니기

세 가지 문제 중 앞의 둘은 좌표를 쓰지 않으면 대부분 사라집니다. 웹 양식은 거의 언제나 Tab 으로 다음 칸에 갑니다. 첫 칸 한 번만 클릭해 두면, 그다음부터는 키보드 동작만으로 끝까지 갈 수 있습니다.

화면이 밀려도 Tab 의 순서는 바뀌지 않으므로, 알림 띠가 떴다 사라져도 영향이 없습니다. 첫 칸을 누르는 그 한 번만 창 기준 좌표 로 저장해 두면 됩니다 (좌표가 자꾸 어긋날 때).

칸 사이에 체크박스나 링크가 끼어 있으면 Tab 한 번이 그쪽으로 갑니다. 만들기 전에 사람이 직접 Tab 을 눌러 보며 몇 번 눌러야 다음 칸인지 세어 두면 나중에 원인을 찾느라 헤매지 않습니다.

동작 목록 만들기

엑셀에서 머리글 줄까지 포함해 복사한 뒤 표 반복 에 붙여넣거나, CSV 파일을 고릅니다. 머리글이 곧 {품목명} 같은 이름이 됩니다.

 1  창 활성화     주문 등록 - 거래처 포털      (최대 15초 대기)
 2  표 반복 시작  주문목록.csv  (100행)
 3    마우스 클릭  창 기준 (380, 240)          품목명 칸 (여기만 좌표)
 4    문자열       붙여넣기 {품목명}
 5    키보드       Tab 누르고 떼기
 6    문자열       붙여넣기 {규격}
 7    키보드       Tab 누르고 떼기
 8    문자열       붙여넣기 {수량}
 9    키보드       Tab 누르고 떼기
10    문자열       붙여넣기 {단가}
11    키보드       Tab 누르고 떼기
12    문자열       붙여넣기 {납기일}
13    키보드       Tab 누르고 떼기
14    문자열       붙여넣기 {비고}
15    이미지 찾기  등록 버튼  · 찾으면 클릭 · 재시도 3
16    색 대기      창 기준 (380,240) 흰색 · 최대 15초   칸이 비워질 때까지
17  표 반복 끝
  1. 창 활성화를 맨 앞에 둡니다. 브라우저 창을 클릭해서 앞으로 가져오면 그 자리에 있던 링크를 눌러 다른 페이지로 넘어갈 수 있습니다. 창 제목으로 찾아 전경으로 가져오는 동작을 씁니다.
  2. 한글은 클립보드 붙여넣기로 넣습니다. 문자열 동작의 클립보드 붙여넣기 를 켜면 한 글자씩 보내지 않으므로 입력기(IME) 때문에 글자가 깨지지 않고 더 빠릅니다.
  3. 등록 버튼은 이미지 찾기로 누릅니다. 버튼은 양식 맨 아래라 내용 길이에 따라 자리가 가장 많이 밀립니다. 캡처해 둔 그림으로 찾으면 밀려도 맞습니다. 가끔 못 찾는다면 그 동작에 재시도 횟수(우클릭 메뉴)를 줍니다.
  4. 끝에는 색 대기를 둡니다. 첫 칸이 비워져 흰색이 되는 것을 보고 다음 행으로 넘어가면, 빠른 날에는 빠르게 느린 날에는 기다렸다 돕니다.

번호만 올라가는 양식이라면

값이 엑셀에 있는 것이 아니라 번호만 하나씩 올라가는 양식도 있습니다. 문서번호를 1번부터 100번까지 매겨 올리는 경우가 그렇습니다.

이때는 표를 만들 필요가 없습니다. 문자열 동작의 $ 연속 숫자 옵션을 켜면 돌 때마다 숫자가 하나씩 올라갑니다. 매크로 반복 횟수를 100 으로 두고 반복 과 회차 간격 만 맞추면 됩니다.

표 반복과 연속 숫자를 같이 쓸 수도 있습니다. 행에서 값을 가져오면서 일련번호만 따로 올리는 모양입니다.

주의할 점

상황이렇게 합니다
브라우저 창 제목이 매번 바뀜제목에서 변하지 않는 부분만 남깁니다. 그래도 어려우면 이미지 찾기로 갑니다
자동완성 목록이 떠서 Tab 이 엉킴입력 뒤에 Esc 키 동작을 하나 넣어 목록을 닫습니다
글자가 군데군데 빠짐설정 > 실행 의 글자 사이 간격 을 20~40ms 로 올립니다
클릭이 아예 안 먹음마우스를 누르고 있는 시간 을 50~120ms 로 올립니다
중간에 멈추고 싶음Ctrl+Alt+2 로 일시정지, 같은 키로 재개합니다

처음 만들 때는 모의 실행 으로 한 번 돌립니다. 실제 입력을 보내지 않고 로그만 남으므로, 어느 값이 어느 순서로 들어갈 예정이었는지 안전하게 봅니다. 그다음에 표를 2~3행으로 줄여 실제로 돌려 보고, 확인한 뒤에 100행으로 바꿉니다.

돌리기 전에 툴바의 점검 을 누르면 없는 창, 표 0행, {머리글} 오타, 블록 짝이 안 맞는 것, 화면 밖 좌표를 미리 알려 줍니다.

웹 양식은 한 번 눌린 등록을 되돌리기 어렵습니다. 매크로 설정의 오류 시 를 건너뛰고 계속 으로 두고, 끝난 뒤 도구 메뉴의 결과 CSV 저장 으로 어느 줄이 실패했는지 확인합니다. 잘못 돌기 시작하면 Pause 한 번으로 전부 멈춥니다.