WebBrowserコントロールの基本的な操作

WebBrowserコントロールの基本的な操作方法について解説します。

目次

操作を行うための前準備については以下を参考にしてください。

Webページの表示

URLを指定してWebページを表示するにはnavigateメソッドを使用します。

ただし、navigateメソッドはページの読み込み完了を待ちませんので、 後述する読み込み完了待ちの処理をいれないと、読み込み途中のまま次の処理が行われてしまいます。

実装方法

指定したURLをWebBrowserコントロールで表示します。
WebBrowser1.Navigate("WebページのURL")

サンプル

						WebBrowser1.Navigate("https://web.biz-prog.net/") '開きたいURL
					
						webBrowser1.Navigate("https://web.biz-prog.net/"); //開きたいURL
					
						WebBrowser1.Navigate "https://web.biz-prog.net/" '開きたいURL
					

参考


読み込み待ち

navigateメソッドでWebページを表示したり、リンクのクリックを行ったり、Submitを行った場合などは、
ページの読み込み・表示が終わるまでの待機する処理が必要です。

もし読み込みの待機処理を行わないと、ページが表示される前に次の処理を行う可能性があり、エラーとなってしまうからです。

以下の処理によりページの表示が終わるまで待機できます。

実装方法

このサンプルは、ページを開いたりリンクをクリックした時の、ページの読み込みが発生する操作後に呼び出すことで、読み込みが終わるまで待機できます。

WebBrowserが読み込み中かの判定は、WebBrowserオブジェクトのBusyプロパティとReadyStateプロパティをチェックします。
Busyプロパティはページの読み込みがビジー(処理中)の場合にtrueになります。
ReadyStateプロパティは現在のドキュメントの読み込み状態が取得できます。Completeになれば読み込み完了です。

While文により、IEの状態がビジーでなく、かつ読み込み状態が完了待ちでなくなるまで、ループを続けます。
DoEnventsは、ループ中にプログラムが操作できないことを避ける命令です(CPU時間を他に割り当てます)。
無限ループを防ぎたい場合はタイムアウトの処理を追加してください。

サンプル

					Public Function OpenWebWait() As Boolean

						Try
							'2秒間ほど待機
							System.Threading.Thread.Sleep(2000)

							'読み込み完了まで待つ
							Do While (WebBrowser1.IsBusy OrElse _
								WebBrowser1.ReadyState <> WebBrowserReadyState.Complete)

								'無処理
								System.Windows.Forms.Application.DoEvents()
								System.Threading.Thread.Sleep(100)
							Loop

							Return True

						Catch ex As Exception
							Return False
						End Try

					End Function
					
					public bool OpenWebWait()
					{
						try
						{
							//2秒間ほど待機
							System.Threading.Thread.Sleep(2000);

							//読み込み完了まで待つ
							while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete)
							{
								//無処理
								System.Windows.Forms.Application.DoEvents();
								System.Threading.Thread.Sleep(100);
							}

							return true;
						}
						catch (Exception ex)
						{
							return false;
						}
					}
					

参考

戻る/進む/ホームページ/検索

閲覧履歴の「戻る」「進む」を行ったり、現在のユーザーのホームページや検索ページに移動します。
これら操作でもページの読み込みが発生しますので、メソッド実行後に、読み込み完了を待つ処理が必要です。(上記参照)

実装方法

サンプル

						WebBrowser1.GoBack()	'戻る
						WebBrowser1.GoForward()	'進む
						WebBrowser1.GoHome()	'ホームページに移動
						WebBrowser1.GoSearch()	'既定の検索ページに移動
					
						webBrowser1.GoBack();       //戻る
						webBrowser1.GoForward();    //進む
						webBrowser1.GoHome();       //ホームページに移動
						webBrowser1.GoSearch();     //既定の検索ページに移動
					
						WebBrowser1.GoBack	'戻る
						WebBrowser1.GoForward	'進む
						WebBrowser1.GoHome	'ホームページに移動
						WebBrowser1.GoSearch	'既定の検索ページに移動
					

中止/リロード

読み込みを中止したり、サイトのリロード(再読み込み)が行えます。
リロードを行った場合はサイトの読み込みが発生しますので、メソッド実行後には読み込み完了を待つ処理が必要です。

実装方法

サンプル

						WebBrowser1.Stop()		'読み込み中止
						WebBrowser1.Refresh()	'再読み込み
					
						webBrowser1.Stop();     //読み込み中止
						webBrowser1.Refresh();  //再読み込み
					
						WebBrowser1.Stop	'読み込み中止
						WebBrowser1.Refresh	'再読み込み
					

タイトル/URLの取得

現在表示しているサイトのタイトルとURLを取得します。

実装方法

サンプル

						MsgBox(WebBrowser1.Document.Title)	'タイトルを表示する
						MsgBox(WebBrowser1.Document.Url)	'URLを表示する
					
						MessageBox.Show(webBrowser1.Document.Title);            //タイトルを表示する
						MessageBox.Show(webBrowser1.Document.Url.ToString());   //URLを表示する
					
						MsgBox(WebBrowser1.Document.Title)	'タイトルを表示する
						MsgBox(WebBrowser1.Document.Url)	'URLを表示する