あるサイトの情報を自動取得したいのですがうまくいきません。
やりたいこととしては自動ログインしてログイン成功後のページ
の特定のAタグをクリックして表示されたページの情報の取得したい、というものになります。
ターゲットのサイトを例えとして
http://abchoge.co.jp/login
とすると、まずこのサイトをNavigateして次にFor EachでInputタグを探し
該当の箇所にユーザー名とパスを入れ、同様にSubmitボタンを探し
Clickすると、画面はログイン成功後のページに遷移するのですが、
この遷移後のページのタグ等の情報が取得できないのです。
具体的にはログイン成功して画面が遷移した後も
objIeオブジェクトの内容が遷移前のログイン画面の情報のままになっており、
更新されていないようです。更新する方法や
または現在ブラウザに表示されているページ内の情報を取得する方法は
ありませんでしょうか?
ちなみにどういうわけか
ログイン画面のClickメソッドを実行する箇所にブレークポイントを
設け、手動でステップインしてログインするとうまくobjIeオブジェクトの内容が
遷移後のページ情報のものに更新されますが、全自動が望ましいです。
コードは以下のようになります。
Dim objIe As Object
Dim a As Object
Set objIe = CreateObject("internetexplorer.application")
objIe.Visible = True
objIe.navigate "http://abchoge.co.jp/login"
Do While objIe.Busy = True Or objIe.readyState <> 4
DoEvents
Loop
For Each a In objIe.document.all.tags("input")
If a.Name = "id" Then
a.Value = "id"
End If
Next
For Each a In objIe.document.all.tags("input")
If a.Name = "pass" Then
a.Value = "pass"
End If
Next
For Each a In objIe.document.all.tags("input")
If a.Name = "submit" Then
a.Click 'ここでブレークポイントを設け手動でステップインで実行するとobjIeの情報は更新されるのですが・・・
End If
Next
Do While objIe.Busy = True Or objIe.readyState <> 4
DoEvents
Loop
'↑ここまではログイン成功となり画面も遷移してうまくいきます
'↓ここであるはずの目的のAタグが見つからず失敗します(objIeの情報が遷移前のまま更新されていない)
For Each a In objIe.document.all.tags("a")
If a.Innertext = "target" Then
a.Click
End If
Next
ちなみにこのサイトは社内のイントラネットのものとなり、
社内PC以外からは通常アクセス不可能です。
またログイン後のページのURLもログイン画面のURLと同じもの
(両者http://abchoge.co.jp/login)となっており、
少し特殊?な作りとなっているサイトになります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。