tagCANDY CGI VBレスキュー(花ちゃん) - WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作例(VB.NET) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作例(VB.NET)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作例(VB.NET) [No.314の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 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

実行結果図(画像をクリックすると元のサイズで見る事ができます。)
メンテ

Page: 1 |

Web上のTextBoxや各種ボタン等の操作時の資料(VB.NET)  (No.1の個別表示) [スレッド一覧へ]
日時: 2012/08/20 09:33
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[インターネット][][]                                                *
* キーワード:ログイン,自動的に,IE,ボタンをクリック,テキスト入力,submit,         *
***********************************************************************************
'==================================================================================
'投 稿 日:2012.02.04
'投 稿 者:VBレスキュー(花ちゃん)
'タイトル:WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作時の資料
'==================================================================================

WebBrowserを使ってWeb上のTextBoxや各種ボタン等の操作例(VB.NET) と合せてご覧下さい。

下記に表示しているのは主な物だけで全てではありません。

上記のプログラム内にでも表記してお使い下さい。

-------------------------------------------------------------------------------------------------

'      HTMLの情報を取得する為の主なメソッド・プロパティ    

'GetAttribute("alt")         代替テキストを取得する場合に使用
'GetAttribute("checked")       チェックボックスやラジオボタンの選択状況を取得
'GetAttribute("href")        リンク先のURL等を取得する場合
'GetAttribute("id")         要素を識別するために固有の ID名を取得する場合
'GetAttribute("name")        要素に付けられたname属性を取得する場合
'GetAttribute("selected")      オプションボタン等の選択状況を取得する場合
'GetAttribute("selectedIndex")    どのオプションボタン等が選択されているかを取得する場合
'GetAttribute("src")         画像ファイル等の保存先の URI を取得する場合
'GetAttribute("title")        要素内に記入されている title 属性を取得する場合
'GetAttribute("type")        要素に付けられたtype属性を取得する場合
'GetAttribute("value")        その要素に記入されている値を取得する場合
'GetElementById("ID名")       要素の ID 属性を検索キーとして使用して HtmlElement を取得する場合
'GetElementsByName("属性名")     対応する名前を指定して要素のコレクションを取得
'GetElementsByTagName("タグ名")   指定した HTML タグを持つ要素のコレクションを取得する場合
'InnerHtml              HTML マークアップを取得または設定する場合
'InnerText              テキストを取得または設定する場合
'OuterHtml              現在の要素の HTML コードを取得または設定する場合
'OuterText              現在の要素のテキストを取得または設定する場合


'      HTMLの情報を設定する為の主なメソッド・プロパティ    

'InnerHtml              HTML マークアップを取得または設定する場合
'InnerText              テキストを取得または設定する場合
'InvokeMember("Click")        ボタン・リンク等をクリックする場合
'InvokeMember("focus")        フォーカスを設定したい場合(画面の見える位置までスクロール)
'InvokeMember("onChange")      Change イベントを発生させたい場合
'InvokeMember("submit")       送信ボタンをクリックしてFORM action を実行させたい場合
'InvokeScript("関数名")       HTML ページで定義されたアクティブ スクリプト関数を実行
'OuterHtml              現在の要素の HTML コードを取得または設定する場合
'OuterText              現在の要素のテキストを取得または設定する場合
'RaiseEvent("onChange")       Change イベントを発生させたい場合
'SetAttribute("Checked", "")     オプションボタン・チェックボックスの選択のチェックを外す場合
'SetAttribute("Checked", "true")   オプションボタン・チェックボックスを選択する場合
'SetAttribute("Selected", "True")  リストボックスのアイテムを選択する場合
'SetAttribute("selectedIndex", "2") リストボックス等の指定のアイテムを選択する場合
'SetAttribute("value", "文字列")   テキストボックス等に書き込む場合


' 参考 サイト
'WebBrowser メンバ 一覧
'http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser_members(VS.80).aspx

'MSDN HtmlElement クラスの解説
'http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.aspx

'HTMLタグリファレンス(ABC順)
'http://www.htmq.com/html/index.shtml

'要素・属性 辞典
'http://w3g.jp/xhtml/dic/
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ