楽天銀行の法人用画面を自動ログイン。
UWSCですべてのフォームとエレメントを書き出す
IEはフォームとそこに含まれる各項目に対して、forms(n).elements(i)という形式のインデックスを割り振るため、プログラムでターゲットを特定し何らかの操作を行うことが可能となる。
ただターゲットのテキストボックスがどのフォームの何番目のエレメントがわからない。そこで全エレメントを書き出してみる。
//各フォームのエレメントの中身を書き出す
FOR n = 0 TO (IE.document.forms.length -1)
PRINT "n=" + n + " → "
FOR i = 0 TO (IE.document.forms[n].elements.length -1)
PRINT "i=" + i + " → " + IE.document.forms[n].elements[i].name
NEXT
PRINT "-----------------"
NEXT
結果
見た目、フォーム(「<form」で始まるブロック)は一つしかないように見えるが、書き出してみると4つある。このうち自動ログインに関係あるテキストボックスはユーザーid(LOGIN:USER_ID)とパスワード。
n=0 →
i=0 → LOGINPASSWORD_FORM_1_SUBMIT
i=1 → jsf_sequence
i=2 → LOGINPASSWORD_FORM_1:_link_hidden_
-----------------
n=1 →
i=0 → LOGIN:USER_ID
i=1 → LOGIN:LOGIN_PASSWORD
i=2 → LOGIN:_idJsp84
i=3 → LOGIN_SUBMIT
i=4 → jsf_sequence
i=5 → LOGIN:_link_hidden_
-----------------
n=2 →
i=0 → SECURITY_BOARD_SUBMIT
i=1 → jsf_sequence
i=2 → SECURITY_BOARD:_link_hidden_
-----------------
n=3 →
i=0 → LOGINPASSWORD_FORM_2_SUBMIT
i=1 → jsf_sequence
i=2 → LOGINPASSWORD_FORM_2:_link_hidden_
-----------------
UWSCの自動ログイン
IE.visible = true
IE.navigate("★楽天銀行 法人用画面のURL★")
REPEAT
SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE = 4
IE.document.forms[1].elements[0].value = "★ユーザーid★"
IE.document.forms[1].elements[1].value = "★???★"
IE.document.forms[1].elements[2].click()
危険なのでこのままでは運用しないが、まあ、毎日手作業でログインというわけにはいかない。