三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


[記事一覧、バックナンバーを見る]

楽天ツールバー使用時の自動ログイン処理をVBSでテスト/デバッグ

デバック、現状確認。

質問者から
前回作成した楽天市場のログイン処理ですが、
楽天ツールバーのログインページだと動作しない・・・
と連絡を受ける。

微妙に違う ログイン画面

原因は、ツールバーのログインページのボタンがログインだったので、
次へを探して .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

↑いつものように解説がループしてますが、よろしくお願いします。

前回から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




三流君へ メッセージを送る

全ての質問に答えることはできませんが、
ダメもとで、気軽に質問、感想、メッセージを送ってくださいね・・・

感想や質問・要望・苦情など 三流君へメッセージを送る。
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)
例:[XXXXさんへ回答例]←みたいに回答していたり...


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)