ボタンも画像もOK。UWSCでWEBサイトのクリック操作やログイン処理に悩んだら読んで!HTMLタグ別攻略法。
UWSCでWEBサイトのボタンクリック操作(IEのDOM操作)の処理を書くときに、サイトごとにログインページ等のHTMLが違うので、迷っちゃったりすることってありますよね…。
INPUTボタンを使ってる場合も、画像ボタンを使っている場合もありますし、nameやvalue属性があったりなかったり、サイト・ページによって異なりますからね。
そんなときは本記事のパターンを参考にしてみてください。
大半のサイトはこちらで自動クリックできるはずです(∩´∀`)∩。
ログインボタンが「input」要素で「name」属性を持っている
もっとも標準的なボタンと言えるでしょう。特に意識せずにボタンを設置している場合は、このタイプのボタンになっていることが多いのではないかと思います。
本パターンのようなHTMLの場合のクリック処理は以下のようになります。
ログイン部分のHTML
<input class="bt" name="login_page" type="submit" value="ログイン" />
対応するUWSCスクリプトの記述
IESETDATA(IE, 1, "login_page")
ログインボタンが「input」要素で「name」属性だが、同一「name」が存在する
HTML自体は前述のパターンの場合でも、同一ページ内に同じ「name」属性のボタンが複数存在する場合、うまくクリックすることができない場合があります(常に1個目のボタンをクリックしてしまい、2個目以降のボタンをクリックできない)。
IESETDATAの構文は「戻値 = IESETDATA( IE, 値, Name, [Value, 番号] )」です。なので、同一「name」がある場合は、さらにValue、番号等を指定していけばOKです。
本パターンのようなHTMLの場合のクリック処理は以下のようになります(valueの指定を追加しています。もし、valueも同一の場合は番号で指定しましょう。)。
ログイン部分のHTML
<input type="submit" name="login_button" value="ログインする" />
対応するUWSCスクリプトの記述
IESETDATA(IE, 1, "login_button", "ログインする")
ログインボタンが「input」要素で「name」属性だが、Value・番号以外で指定したい
「戻値 = IESETDATA( IE, 値, Name, [Value, 番号] )」の「Name」の部分は、タグ名での指定が可能「”TAG=タグ名”」です。
何か事情があり、Value・番号で指定できない場合(Valueがない・同一、または番号が可変)は他の属性で指定しましょう。
本パターンのようなHTMLの場合のクリック処理は以下のようになります。この場合は、nameが無いのでalt属性で指定しています。
ログイン部分のHTML
<input type="image" alt="ログイン" src="/consumer/img/static/btn_login_member280_ie7.png">
対応するUWSCスクリプトの記述
IESETDATA(IE,True,"","alt=ログイン")
ログインボタンが「input」要素だけど、typeが”submit”
基本は今まで書いてきたパターンと同様、IESETDATAでOKなのですが、属性がついてないような場合もあります。
このようなケースでtypeが「submit」ならば、直接submitした方が良い場合もあります。(ただし、フォームの連番を確認する必要があります)
本パターンのようなHTMLの場合のクリック処理は以下のようになります。
ログイン部分のHTML
<input class="btn_login_ssl" type="submit" value="ログイン"/>
対応するUWSCスクリプトの記述
IE.document.forms[0].submit()
ログインボタンが画像(img)
ボタンが画像(img)で配置されており、クリックの動作はscriptで書かれているようなものもあります。こういうのが一番面倒なタイプです。このような場合は対象の画像を探してあげて、クリックしてやる処理を入れます。
本パターンのようなHTMLの場合のクリック処理は以下のようになります。この場合、画面のすべての画像を取得し、alt属性が「ログイン」となっている画像をクリックしています。
ログイン部分のHTML
<img src="/images/common/icon/login.gif" alt="ログイン" name="login_buttom" id="login_buttom" />
対応するUWSCスクリプトの記述
IMG_LST = IE.Document.Images FOR I = 0 TO IMG_LST.length - 1 IFB IMG_LST.Item(I).Alt = "ログイン" THEN IMG_LST.Item(I).Click() ENDIF NEXT
いかがでしたでしょうか?
これでほとんどのボタンクリック操作は攻略できるはずです!(∩´∀`)∩
まあ、それでも、どうしてもだめだったら、座標指定でクリックしてくださいw
クリックしたいのがボタンでなくてリンクの場合は、以下記事を参考にしてください。
なお、当然ですが、クリックの前にはIEをCREATEOLEOBJしておく必要があります。こういう共通処理はクラス化しておいた方が便利です。
また、どうしてもわからない場合はteratailで質問してみるという手もあります。teratailは幅広いプログラミング技術について何でも質問できるWEBに特化したQAサイトで、メルアドだけで登録できますし、返答が付く確率が高いので、大変役に立ちますよ。