- 日時: 2013/01/20 09:12
- 名前: VBレスキュー(花ちゃん)
- ***********************************************************************************
* カテゴリー:[インターネット][][] * * キーワード:ログイン,自動的に,IE,ボタンをクリック,テキスト入力,submit, * *********************************************************************************** '================================================================================== '投 稿 日:2012.02.04 '投 稿 者:VBレスキュー(花ちゃん) 'タイトル:WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作例(434) '動作確認:WindowsVista / Windows 7 / VB2005 / VB2008 / VB2010 / IE 9.0 '[Option Compare Text][Option Explicit On][Option Infer On][Option Strict On]で設定 'VB6.0用を投稿しましたので、VB2005〜用も作成し、投稿しました。 '================================================================================== '---------------------------------------------------------------------------------- ※ 使用コントロール及び貼り付け位置等は下図の実行結果図を参考にお好みで。 (一旦現状のままで、動作確認をしてから改造するなり修正するなりしてお使い下さい) (尚、満足に動作しないと言う事なら、当サイトの掲示板の方に質問願います。) 読み込み待ち設定を行っておりませんので、完全に表示されてから実行して下さい。 '---------------------------------------------------------------------------------- 下記の WebBrowserを使ってのHTMファイル内の全ての要素を調査(VB.NET) と 合わせてご使用下さい。 http://www.hanatyan.sakura.ne.jp/patio/read.cgi?no=313 又、コメントや注意書きをよく読んでご使用下さい。変に書き換えたりすると 動作しないし、エラーが発生する事になります。 必ず、指定のサイトでお試し下さい。他のサイトではそのままでは動作しません。
Public Class Form1
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click '1.ボタンのクリック操作(その1) のボタン【type="button"】を操作する
'要素名とボタンの表面の文字とでどのボタンかを特定する場合 Dim elem As HtmlElement For Each elem In WebBrowser1.Document.GetElementsByTagName("input") '要素=input の value 属性の値を調べる If elem.GetAttribute("value") = "水色" Then elem.InvokeMember("Click") ' End If Next MessageBox.Show("背景を赤色にします。") '要素名とボタン名で特定して操作する場合 WebBrowser1.Document.GetElementsByTagName("input").Item("btnred").InvokeMember("Click")
MessageBox.Show("背景をみどりにします。") '特に特定できるものがない場合 WebBrowser1.Document.GetElementsByTagName("input").Item(2).InvokeMember("Click")
MessageBox.Show("背景を白色にします。") 'ID で特定して操作する場合(最初に見つかった1個だけを格納する) WebBrowser1.Document.GetElementById("btn_white").InvokeMember("Click") End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click '2.ボタンのクリック操作(その2)のボタン【type="submit" × type="button" ○】を操作する '注意 type="submit" となっているが本来の"submit" ボタンでは無い 'name だけで特定する場合(同じ name が複数見つかれば見つかった分だけ格納する) '同じnameが1個なら Item(0) を複数なら出現順の no を指定 WebBrowser1.Document.All.GetElementsByName("btn2").Item(0).InvokeMember("click")
'このように書く事もできます(WEBページが変更されと変わってしまう) WebBrowser1.Document.Forms.Item(1).All.Item(6).InvokeMember("click")
'本来は、前もってどのような物が存在するか調べておいてから操作するので '上記のような方法でもいいのですが、書き換えて変更され見つからない場合も 'あるので実装時にはエラーチェックをつけて下さい。 If WebBrowser1.Document.All.GetElementsByName("btn4").Count > 0 Then WebBrowser1.Document.All.GetElementsByName("btn4").Item(0).InvokeMember("click") End If 'この場合これでは何も動作しない WebBrowser1.Document.All.GetElementsByName("btn2").Item(0).InvokeMember("submit") End Sub
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click ' 3.テキストボックスへの読み書き でのテキストボックス【type="text"】の値を取得と書き込み Dim txt As String txt = WebBrowser1.Document.GetElementsByTagName("input").Item("textbox2").GetAttribute("value") MessageBox.Show("テキストボックスの内容は、" & txt & "です。") WebBrowser1.Document.GetElementsByTagName("input").Item("textbox2").SetAttribute("value", "書き換えました") End Sub
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click '4.オプションボタンの選択 でのオプションボタン【type="radio"】の選択方法 Dim elem As HtmlElement 'Name rg1 で同じなので特定できないので For Each elem In WebBrowser1.Document.GetElementsByTagName("input") '操作したいチェックボックスを探す If elem.GetAttribute("value") = "op1" Then ' True と書きたいところだが "True" のように文字型でないとだめ '外す場合は、"False" かと思いきや "" を指定すればOK 'それならばと "hoge" と書いても OK だ! elem.SetAttribute("Checked", "hoge") '又は、下記でもok(既に、チェック済みでもチェックボックスの場合は、チェックが外れないので) ' elem.InvokeMember("Click") End If '現在の状態を調べる場合 If elem.GetAttribute("value") = "op1" Then MessageBox.Show("op1 は" & elem.GetAttribute("Checked") & " です。") 'これでチェックが外れます。 elem.SetAttribute("Checked", "") End If Next End Sub
Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click '5.チェックボックスの選択 でのチェックボックスの【type="checkbox"】選択方法 '既にチェック済みならチェックが外れるので事前に確認の事 If WebBrowser1.Document.GetElementsByTagName("input").Item("ch1").GetAttribute("Checked") = "False" Then WebBrowser1.Document.GetElementsByTagName("input").Item("ch1").SetAttribute("Checked", "True") End If 'Name が一意なので下記でもOK Dim elem As HtmlElement = WebBrowser1.Document.All.GetElementsByName("ch3").Item(0) If elem.GetAttribute("Checked") = "False" Then '大文字でも小文字でもOK elem.SetAttribute("Checked", "True") 'オプションボタンの時と同様でOK elem.SetAttribute("Checked", "") End If End Sub
Private Sub Button7_Click(sender As System.Object, e As System.EventArgs) Handles Button7.Click '6.リストボックスの選択(その1)でのリストボックスの操作例 Dim elem As HtmlElement = Nothing For Each elem In WebBrowser1.Document.GetElementsByTagName("SELECT") 'Name=op_1 のリストボックスを選択 If elem.GetAttribute("NAME") = "op_1" Then 'VB6.0用掲示板を選択 elem.Children.Item(2).SetAttribute("Selected", "True hogeでもOK") 'イベントの発生が必要な場合下記のように設定 elem.RaiseEvent("onChange") '又は下記でもOK 'elem.InvokeMember("onChange") Exit For End If Next
'下記のように特定できるならこのように書くこともできる 'WebBrowser1.Document.All.GetElementsByName("op_1").Item(0).SetAttribute("Selectedindex", "2") 'WebBrowser1.Document.All.GetElementsByName("op_1").Item(0).InvokeMember("onChange")
End Sub
Private Sub Button8_Click(sender As System.Object, e As System.EventArgs) Handles Button8.Click '7.リストボックスの選択(その2)でのリストボックスの操作例 Dim elem As HtmlElement = Nothing For Each elem In WebBrowser1.Document.GetElementsByTagName("SELECT") 'listbox1 のリストボックスを選択 If elem.GetAttribute("NAME") = "listbox1" Then For i As Integer = 0 To elem.Children.Count - 1 If elem.Children.Item(i).GetAttribute("Selected") = "True" Then MessageBox.Show("ListBox で " & elem.Children.Item(i).InnerText & " = " & _ elem.Children.Item(i).GetAttribute("value") & " が選択されています") End If Next End If Next End Sub
Private Sub Button9_Click(sender As System.Object, e As System.EventArgs) Handles Button9.Click '8.送信ボタンのクリック での送信ボタン【type="submit"】の操作例 'こちらの submit ボタンは以下のようにしてクリックできる WebBrowser1.Document.Forms(7).InvokeMember("submit") End Sub
Private Sub Button10_Click(sender As System.Object, e As System.EventArgs) Handles Button10.Click '9.通常のリンクのクリック でのリンクのクリック例 Dim elem As HtmlElement = Nothing For Each elem In WebBrowser1.Document.GetElementsByTagName("A") '指定の A タグ内にある一意のものを指定する '最悪、href で URL を取得して照合する
If elem.InnerText = "メニューへ移動" Then elem.InvokeMember("Click") 'クリックする Exit For End If Next End Sub
Private Sub Button11_Click(sender As System.Object, e As System.EventArgs) Handles Button11.Click '10.画像のリンクのクリック Dim elem As HtmlElement = Nothing For Each elem In WebBrowser1.Document.GetElementsByTagName("img") '指定の img 内にある一意のものを指定する '最悪、href で URL を取得して照合する If elem.GetAttribute("alt") = "玄関へお回り下さい" Then elem.InvokeMember("Click") 'あれば、そのイメージをクリック Exit For End If Next End Sub
Private Sub Button12_Click(sender As System.Object, e As System.EventArgs) Handles Button12.Click 'HtmlDocument.InvokeScript メソッド の使用例 Dim obj0 As Object = "只今 InvokeScript の" & vbCrLf Dim obj1 As Object = "テスト中です" Dim objArray As [Object]() = New [Object](1) {obj0, obj1} WebBrowser1.Document.InvokeScript("test", objArray) End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 'テスト用の WEB ページ を表示(変更すると動作しません。) WebBrowser1.Navigate("http://www.hanatyan.sakura.ne.jp/testfile1.htm") End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 'テストページを表示 'テスト用の WEB ページ を表示(変更すると動作しません。) WebBrowser1.Navigate("http://www.hanatyan.sakura.ne.jp/testfile1.htm") End Sub
End Class
実行結果図(画像をクリックすると元のサイズで見る事ができます。)
|