デバック、現状確認。
質問者から
前回作成した楽天市場のログイン処理ですが、
楽天ツールバーのログインページだと動作しない・・・
と連絡を受ける。
微妙に違う ログイン画面
原因は、ツールバーのログインページのボタンがログインだったので、
次へを探して .Click を ログインを探して.Clickに変更しないとダメでした。
前回作成 楽天市場からログインのリンクを押す
前回のサンプル
VBS で IEを使用して楽天市場にログインしてみた
http://d.hatena.ne.jp/ken3memo/20110721/1311244241
の次へを探すパターン
では、
https://www.rakuten.co.jp/myrakuten/login.html
へ飛びデータセット後、次へを押す を VBSから実行しました。
質問にあった、ツールバーのログインのボタンを押すと
ツールバーのログインボタンを押すと https://websearch.rakuten.co.jp/login.html?tool_id=1 が表示される。
↓このログイン画面が、次へ?ではなくて、ログインとなっていたのが原因です。
デバッグ・テストの作業風景
解説・デバック風景の動画 → http://www.youtube.com/watch?v=DMu7a8nlCuI
www.youtube.com
↑いつものように解説がループしてますが、よろしくお願いします。
前回から2か所だけ修正したソース
入口のURL と 探す文字列を 次へ から ログイン に 変えただけですが
下記、楽天ツールバー使用時 の ログインです。
xxxx.vbs など、名前を付けてテストしてみてください。
'頭で固定値をセットする 自分の番号をセットする。 strUID = "test@test.test" 'ユーザー-ID、メールアドレスの人もいる strPassword = "1234" 'パスワードあまりスクリプトには保存したくないけど 'パスワード保存したくない人向け、頭で入力させる If strPassword = "" Then strPassword = InputBox("パスワードを入れてください") End If 'IEの起動 Dim objIE '変数を定義します。 Set objIE = WScript.CreateObject("InternetExplorer.Application") 'オブジェクト作成 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 'ここでは、楽天のログインページを直接呼びます objIE.Navigate "https://websearch.rakuten.co.jp/login.html?tool_id=1" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 WScript.Sleep 100 '0.1秒待つ 1000で1秒 Wend 'ユーザー-ID(name=u)にセットする。 Set objU = objIE.Document.getElementsByName("u") '変数に一度セットする If objU.Length = 0 Then '.Lengthで 取得したエレメントの数がわかります '終了処理/エラー処理 0の時は見つからなかったので Msgbox "ログインページが変わったか?メンテ中?です。表示されている内容を確認してください" WScript.Quit 'スクリプトを途中で抜ける End If objU(0).Value = strUID 'データをセットする Set objU = Nothing 'オブジェクト変数解放 'パスワード(name=p)にセットする。 objIE.Document.getElementsByName("p").Item(0).Value = strPassword 'セットする 'ログイン ボタンを探して押す 'input type="submit" value=" ログイン "> を 探す 'INPUTのタグを集める .getElementsByTagName("INPUT")を使用 Set objINPUT = objIE.Document.getElementsByTagName("INPUT") 'ループで頭からテキストが 次へ を探す For n = 0 To objINPUT.Length - 1 '※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意 'ログインの文字を探す If Instr(objINPUT(n).Value,"ログイン") > 0 Then '文字列の中から見つけたら objINPUT(n).Click '見つけたINPUTタグのオブジェクトをクリック Exit For End If Next Set objINPUT = Nothing 'オブジェクト変数解放 'ここからログイン後に自動化したい処理がイロイロとあるんだけど....
終わりの挨拶
バグ、不具合報告でも、レスポンス/反応が速いっていいですね
※ぉぃぉぃ、ホントかよ
今回は、なんとか修正できたからよかった、よかった。
次回、難問が来ないことを願いつつ、失礼します。 三流プログラマー Ken3