エレメントの指定

ボタンやテキストボックスなど各部品はHTML要素(エレメント)といいます。
エレメントに対して操作する際の、エレメントの指定方法について述べます。

参考:

WebBrowserのエレメント(HTML要素)について
WebBrowserコントロール内のテキストボックスに文字列をセットするには?

Allプロパティによるエレメントの指定

「Document.All」プロパティにより、ページ(ドキュメント)内の全てのHTML要素にアクセスできます。
名前、ID、またはインデックスを指定します。

■インデックス指定

IE.Document.All(n).~
all(n)と指定することで、先頭からn番目のエレメントにアクセスします。(nは0~の数値)

サンプルコード(IE操作時)

					'サイトの全てのエレメントの内容を表示します。
					For i = 0 As Integer To objIE.Document.All.Length - 1
						Debug.WriteLine(objIE.Document.All(i).InnerTEXT)
						Debug.WriteLine(objIE.Document.All.Item(i).InnerTEXT)
					Next
				
                    //サイトの全てのエレメントの内容を表示します。
                    for(int i = 0; i < objIE.Document.All.Length; i++)
                    {
                        Console.WriteLine(objIE.Document.All(i).InnerText);
                        Console.WriteLine(objIE.Document.All.Item(i).InnerText);
                    }
				
					'サイトの全てのエレメントの内容を表示します。
					Dim i As Integer
					For i = 0 To objIE.Document.All.Length - 1
						Debug.Print objIE.Document.All(i).InnerTEXT
						Debug.Print objIE.Document.All.Item(i).InnerTEXT
					Next
				

サンプルコード(WebBrowser時)

					'サイトの全てのエレメントの内容を表示します。
					For i As Integer = 0 To WebBrowser1.Document.All.Count - 1
						Debug.WriteLine(WebBrowser1.Document.All(i).InnerTEXT)
						Debug.WriteLine(WebBrowser1.Document.All.Item(i).InnerTEXT)
					Next
				
                    //サイトの全てのエレメントの内容を表示します。
                    for(int i = 0; i < webBrowser1.Document.All.Count; i++)
                    {
                        Console.WriteLine(webBrowser1.Document.All[i].InnerText);
                    }
				
					'サイトの全てのエレメントの内容を表示します。
					Dim i As Integer
					For i = 0 To WebBrowser1.Document.All.Length - 1
						Debug.Print WebBrowser1.Document.All(i).InnerTEXT
						Debug.Print WebBrowser1.Document.All.Item(i).InnerTEXT
					Next
				

■NAME/ID属性指定

ID属性/NAME属性の直接指定
IE.Document.all.***.~
***部分にID/NAMEを使用します。

サンプルコード(IE操作時)

					objIE.Document.All.login.value = "loginID"
					objIE.Document.All.Item("pass").value = "password"
				
                    objIE.Document.All.login.value = "loginID";
                    objIE.Document.All.Item("pass").value = "password";
				
					objIE.Document.All.login.value = "loginID"
					objIE.Document.All.Item("pass").value = "password"
				

サンプルコード(WebBrowser時)

					'WebBrowser1.Document.All.login.value = "loginID"	'直接指定はできない
					WebBrowser1.Document.All.Item("pass").InnerText = "password"
				
                    //webBrowser1.Document.All.login.value = "loginID";    直接指定はできない
                    webBrowser1.Document.All["pass"].InnerText = "password";
				
					WebBrowser1.Document.All.login.value = "loginID"
					WebBrowser1.Document.All.Item("pass").value = "password"
				

参考

HtmlDocument.All プロパティ

ID属性によるエレメントの指定

GetElementByIdメソッドにより、指定した文字列をID属性とするエレメントにアクセスします。

書式

IE.Document.getElementById("***").~

サンプルコード(IE操作時)

					MsgBox(objIE.Document.getElementById("aidi").innerText)
				
					MsgBox (objIE.Document.getElementById("aidi").innerText)
				
					MsgBox (objIE.Document.getElementById("aidi").innerText)
				

サンプルコード(WebBrowser時)

					MsgBox(WebBrowser1.Document.getElementById("aidi").innerText)
				
					MessageBox.Show(objIE.Document.GetElementById("aidi").innerText);
				
					MsgBox (WebBrowser1.Document.getElementById("aidi").innerText)
				

参考

WebBrowserのGetElementByIdについて

NAME属性によるエレメントの指定

GetElementsByNameメソッドより、指定した文字列をNAME属性とする複数のエレメントにアクセスします。

書式

GetElementsByName("***")~

取得したエレメントリストからエレメントにアクセスするには、
・itemプロパティを使う
 getElementsByName("***").item(n).エレメント (nは0~の数値)
・添え字を使う
 getElementsByName("***")(n).エレメント (nは0~の数値)
があります。

サンプルコード(IE操作時)

					MsgBox(objIE.Document.getElementsByName("namae")(0).InnerText)
					MsgBox(objIE.Document.getElementsByName("namae").Item(1).InnerText)
				
                    MessageBox.Show(objIE.Document.getElementsByName("namae")(0).innerText);
                    MessageBox.Show(objIE.Document.getElementsByName("namae").Item(1).innerText);
				
					MsgBox (objIE.Document.getElementsByName("namae")(0).InnerText)
					MsgBox (objIE.Document.getElementsByName("namae").Item(1).InnerText)
				

サンプルコード(WebBrowser時)

					MsgBox(WebBrowser1.Document.All.GetElementsByName("namae")(0).InnerText)
					MsgBox(WebBrowser1.Document.All.GetElementsByName("namae").Item(1).InnerText)
				
                    MessageBox.Show(webBrowser1.Document.All.GetElementsByName["namae"][0].innerText);
                    MessageBox.Show(webBrowser1.Document.All.GetElementsByName["namae"].Item[1].innerText);
				
					MsgBox (WebBrowser1.Document.getElementsByName("namae")(0).InnerText)
					MsgBox (WebBrowser1.Document.getElementsByName("namae").Item(1).InnerText)
				

参考

WebBrowserのGetElementsByNameについて

TAGによるエレメントの指定

GetElementsByTagNameメソッドより、指定した文字列をタグとする複数のエレメントにアクセスします。

書式

GetElementsByTagName("***")~

取得したエレメントリストからエレメントにアクセスするには、
・itemプロパティを使う
 getElementsByTagName("***").Item(n).エレメント (nは0~の数値)
・添え字を使う
 getElementsByTagName("***")(n).エレメント (nは0~の数値)
があります。

サンプルコード(IE操作時)

					For Each element As mshtml.HTMLAnchorElement In objIE.Document.GetElementsByTagName("A")
						Debug.WriteLine(element.InnerText)
					Next
				
                    foreach(mshtml.HTMLAnchorElement element in objIE.Document.GetElementsByTagName("A"))
                    {
                        Console.WriteLine(element.innerText);
                    }
				
					Dim i As Integer
					For i = 0 To objIE.Document.GetElementsByTagName("A").Length - 1
						Debug.Print objIE.Document.GetElementsByTagName("A")(i).InnerTEXT
					Next
				

サンプルコード(WebBrowser時)

					For Each element As mshtml.HTMLAnchorElement In WebBrowser1.Document.GetElementsByTagName("A")
						Debug.WriteLine(element.InnerText)
					Next
				


				
					Dim i As Integer
					For i = 0 To WebBrowser1.Document.GetElementsByTagName("A").Length - 1
						Debug.Print WebBrowser1.Document.GetElementsByTagName("A")(i).InnerTEXT
					Next
				

参考

WebBrowserのGetElementsByTagNameについて

リンクのエレメント指定

Document.Linksプロパティにより、ページ(ドキュメント)内の全てのハイパーリンクのHTML要素にアクセスできます。
インデックスを指定します。

サンプルコード(IE操作時)

サンプルコード(WebBrowser時)

					'サイトの全てのリンクの内容を表示します。
					For i As Integer = 0 To WebBrowser1.Document.Links.Count - 1
						Debug.WriteLine(WebBrowser1.Document.Links(i).GetAttribute("Href"))	'hrefを表示
						Debug.WriteLine(WebBrowser1.Document.Links(i).InnerTEXT)			'リンク名を表示
					Next
				
                    //サイトの全てのリンクの内容を表示します。
                    for(int i = 0; i < webBrowser1.Document.Links.Count; i++)
                    {
                        Console.WriteLine(webBrowser1.Document.Links[i].GetAttribute("Href")); //hrefを表示
                        Console.WriteLine(webBrowser1.Document.Links[i].InnerText);            //リンク名を表示
                    }
				
					'サイトの全てのリンクの内容を表示します。
					Dim i As Integer
					For i = 0 To WebBrowser1.Document.Links.Length - 1
						Debug.Print WebBrowser1.Document.Links(i).Href		'hrefを表示
						Debug.Print WebBrowser1.Document.Links(i).InnerTEXT	'リンク名を表示
					Next
				

参考

WebBrowserのDocument.Linksについて
IHTMLLinkElement interface

Formのエレメント指定

ページ(ドキュメント)内の全ての<FORM>要素にアクセスできます。
submit/resetの実行を行います。
名前、ID、またはインデックスを指定します。

インデックス指定

IE.Document.forms(n).~
forms(n)と指定することで、サイトの先頭からn番目のフォームにアクセスします。(nは0~の数値)

ID属性/NAME属性の直接指定

IE.Document.forms("***").~
***部分にフォームに定義されているID/NAME属性を使用します。

サンプルコード(IE操作時)

					'IDが"main_frm"のFormをReset
					objIE.Document.forms("main_frm").Item(0).Value = 100

					'先頭FORMのIDがtestのチェックボックスをON
					objIE.Document.forms(0).Item("test").Checked = True

					'先頭FORMをSubmit
					objIE.Document.forms(0).Submit
				
                    //idが"main_frm"のformをReset
                    objIE.Document.forms("main_frm").Item(0).Value = 100;

                    //先頭formのidがtestのチェックボックスをON
                    objIE.Document.forms(0).Item("test").Checked = true;

                    //先頭formをSubmit
                    objIE.Document.forms(0).Submit();
				
					'IDが"main_frm"のFormをReset
					objIE.Document.forms("main_frm").Item(0).Value = 100

					'先頭FORMのIDがtestのチェックボックスをON
					objIE.Document.forms(0).Item("test").Checked = True

					'先頭FORMをSubmit
					objIE.Document.forms(0).Submit
				

サンプルコード(WebBrowser時)

					'IDが"main_frm"のFormをReset
					WebBrowser1.Document.Forms("main_frm").All(0).InnerText = 100

					'先頭FORMのIDがtestのチェックボックスをON
					WebBrowser1.Document.Forms(0).All("test").SetAttribute("Checked", "True")

					'先頭FORMをSubmit
					WebBrowser1.Document.Forms(0).InvokeMember("Submit")
				
                    //idが"main_frm"のformのテキストボックスに値を設定
                    webBrowser1.Document.Forms["main_frm"].All[0].InnerText = "100";

                    //先頭formのidがtestのチェックボックスをON
                    webBrowser1.Document.Forms[0].All["test"].SetAttribute("Checked", "True");

                    //先頭formをSubmit
                    webBrowser1.Document.Forms[0].InvokeMember("Submit");
				
					'IDが"main_frm"のFormをReset
					WebBrowser1.Document.forms("main_frm").Item(0).Value = 100

					'先頭FORMのIDがtestのチェックボックスをON
					WebBrowser1.Document.forms(0).Item("test").Checked = True

					'先頭FORMをSubmit
					WebBrowser1.Document.forms(0).Submit
				

参考

WebBrowserのDocument.Formsについて
IHTMLFormElement interface

Frameの指定

ページ(ドキュメント)内の全ての<FRAME>要素にアクセスできます。

ID属性/NAME属性の直接指定

IE.Document.Frames(***).Document.~
***部分にフレームに定義されているID/NAME属性を使用します。

サンプルコード(IE操作時)

					'2番目のフレームのエレメントにアクセスします
					objIE.Document.Frames(1).Document.All.Item("login").value = "login"

					'NAME属性が"frame1"のフレームのエレメントにアクセスします
					objIE.Document.Frames("frame1").Document.All.Item("login").value = "login"

					'複数フレームで構成されている場合、framesを繰り返し指定します。
					objIE.Document.Frames(0).Frames(0).Document.All.Item("login2").value = "login"
				
                    //2番目のフレームのエレメントにアクセスします
                    objIE.Document.Frames[1].Document.All.Item["login"].value = "login";

                    //NAME属性が"frame1"のフレームのエレメントにアクセスします
                    objIE.Document.Frames["frame1"].Document.All.Item["login"].value = "login";

                    //複数フレームで構成されている場合、framesを繰り返し指定します。
                    objIE.Document.Frames[0].Frames[0].Document.All.Item["login2"].value = "login";
				
					'2番目のフレームのエレメントにアクセスします
					objIE.Document.Frames(1).Document.All.Item("login").value = "login"

					'NAME属性が"frame1"のフレームのエレメントにアクセスします
					objIE.Document.Frames("frame1").Document.All.Item("login").value = "login"

					'複数フレームで構成されている場合、framesを繰り返し指定します。
					objIE.Document.Frames(0).Frames(0).Document.All.Item("login2").value = "login"
				

サンプルコード(WebBrowser時)

					'2番目のフレームのエレメントにアクセスします
					WebBrowser1.Document.Window.Frames(1).Document.All.Item("login").InnerText = "login"

					'NAME属性が"frame1"のフレームのエレメントにアクセスします
					WebBrowser1.Document.Window.Frames("frame1").Document.All.Item("login").InnerText = "login"

					'複数フレームで構成されている場合、framesを繰り返し指定します。
					WebBrowser1.Document.Window.Frames(0).Frames(0).Document.All.Item("login2").InnerText = "login"
				


				
					'2番目のフレームのエレメントにアクセスします
					WebBrowser1.Document.Frames(1).Document.All.Item("login").value = "login"

					'NAME属性が"frame1"のフレームのエレメントにアクセスします
					WebBrowser1.Document.Frames("frame1").Document.All.Item("login").value = "login"

					'複数フレームで構成されている場合、framesを繰り返し指定します。
					WebBrowser1.Document.Frames(0).Frames(0).Document.All.Item("login2").value = "login"
				

参考

WebBrowserのDocument.Frameについて