InternetExplorerの基本的な操作
InternetExplorerの基本的な操作方法について解説します。
目次
- Webページの表示
- 読み込み待ち
- 戻る/進む/ホームページ/検索
- 中止/リロード
- タイトル/URLの取得
- InternetExplorerの表示/非表示
- InternetExplorerの位置/サイズ
- InternetExplorerのバー操作
- InternetExplorerの終了処理
Webページの表示
URLを指定してWebページを表示するにはNavigate
メソッドを使用します。
注意として、Navigate
メソッドはページの読み込み完了を待ちませんので、
後述する読み込み完了待ちの処理をいれないと、読み込み途中のまま次の処理が行われてしまいます。
(読み込み中のページに対して操作を行うとエラーになります)
実装方法
Navigate
メソッドには引数が複数あり、・POSTデータを送信したりヘッダーを指定して送信する
・新しいタブで表示する
を行うことができます。
サンプル
objIE.Navigate("https://web.biz-prog.net/") '開きたいURL
objIE.Navigate("https://web.biz-prog.net/"); //開きたいURL
objIE.Navigate "https://web.biz-prog.net/" '開きたいURL
参考
読み込み待ち
Navigate
メソッドでWebページを表示したり、リンクのクリックを行ったり、Submitを行った場合などは、
ページの読み込み・表示が終わるまでの待機する処理が必要です。
もし読み込みの待機処理を行わないと、ページが表示される前に次の処理を行う可能性があり、エラーとなってしまうからです。
以下の処理によりページの表示が終わるまで待機できます。
実装方法
以下のサンプルは、ページの読み込みが発生する操作後(ページを開いたり、リンクをクリックした時等)に呼び出すことで、
読み込みが完了するまで待機します。
InternetExplorerが読み込み中かの判定は、InternetExplorerオブジェクトのBusy
プロパティとReadyState
プロパティをチェックします。
Busy
プロパティはページの読み込みがビジー(処理中)の場合にtrueになります。
ReadyState
プロパティは現在のドキュメントの読み込み状態が取得できます。Completeになれば読み込み完了です。
While文により、InternetExplorerの状態がビジーでなく、かつ読み込み状態が"完了待ち"でなくなるまで、ループを続けます。
DoEnventsは、ループ中にプログラムが操作できないことを避ける命令です(CPU時間を他に割り当てます)。
無限ループを防ぎたい場合はタイムアウトの処理を追加してください。
サンプル
Public Function OpenWebWait() As Boolean Try '読み込み完了まで待つ Do While (objIE.Busy OrElse _ objIE.ReadyState <> SHDocVw.tagREADYSTATE.READYSTATE_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 { //読み込み完了まで待つ while (objIE.Busy || objIE.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) { //無処理 System.Windows.Forms.Application.DoEvents(); System.Threading.Thread.Sleep(100); } return true; } catch (Exception ex) { return false; } }
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
指定した時間が経過したら読み込み待ちを中断したい場合、以下のように改造しましょう。
Dim timeout As Date = Now.AddMinutes(30) '30秒でタイムアウト Dim flgStop As Boolean '停止フラグ。画面でボタン押下時にこのフラグをTrueにすれば止まる Do While (・・・) ・・・ If Now > timeout OrElse flgStop Then objIE.Stop() Exit Do End If Loop
戻る/進む/ホームページ/検索
閲覧履歴の「戻る」「進む」を行ったり、現在のユーザーのホームページや検索ページに移動します。
これら操作でもページの読み込みが発生しますので、メソッド実行後に、読み込み完了を待つ処理が必要です。(上記参照)
実装方法
以下のサンプルのように各メソッドを実行します。
サンプル
objIE.GoBack() '戻る objIE.GoForward() '進む objIE.GoHome() 'ホームページに移動 objIE.GoSearch() '既定の検索ページに移動
objIE.GoBack(); //戻る objIE.GoForward(); //進む objIE.GoHome(); //ホームページに移動 objIE.GoSearch(); //既定の検索ページに移動
objIE.GoBack '戻る objIE.GoForward '進む objIE.GoHome 'ホームページに移動 objIE.GoSearch '既定の検索ページに移動
中止/リロード
読み込みを中止したり、サイトのリロード(再読み込み)が行えます。
リロードを行った場合はサイトの読み込みが発生しますので、メソッド実行後には読み込み完了を待つ処理が必要です。
実装方法
以下のサンプルのように各メソッドを実行します。
サンプル
タイトル/URLの取得
現在表示しているサイトのタイトルとURLを取得します。
実装方法
以下のサンプルのように各プロパティを参照します。
サンプル
InternetExplorerの表示/非表示
起動しているInternetExplorerの表示/非表示を設定します。
InternetExplorerオブジェクトのVisibleプロパティにTrueを設定すると、InternetExplorerが表示されます。
FalseにするとInternetExplorerの画面が消えますが、見えないだけで実際は動作しており、DOM操作を行えます。
プログラムでInternetExplorerを起動した直後はFalseになっているので、まずはTrueに設定しないと何も見えないので注意です。
実装方法
以下のサンプルのように各プロパティを参照します。
サンプル
InternetExplorerの位置/サイズ
起動しているIEの位置・サイズを設定/参照します。
実装方法
以下のサンプルのように各プロパティを参照します。
サンプル
Debug.WriteLine(objIE.Top) 'X座標 Debug.WriteLine(objIE.Left) 'Y座標 Debug.WriteLine(objIE.Width) '幅 Debug.WriteLine(objIE.Height) '高さ
Console.WriteLine(objIE.Top); //X座標 Console.WriteLine(objIE.Left); //Y座標 Console.WriteLine(objIE.Width); //幅 Console.WriteLine(objIE.Height); //高さ
Debug.Print objIE.Top 'X座標 Debug.Print objIE.Left 'Y座標 Debug.Print objIE.Width '幅 Debug.Print objIE.Height '高さ
InternetExplorerのバー操作
- Statusbar:ステータスバーの表示有無を設定/参照します。
- StatusText:ステータスバーに表示するテキストを設定/参照します。
- Toolbar:ツールバーの表示有無を設定/参照します。
- AddressBar:アドレスバーの表示有無を設定/参照します。
実装方法
以下のサンプルのように各プロパティを参照します。
サンプル
objIE.AddressBar = False 'アドレスバー objIE.MenuBar = False 'メニューバー objIE.Toolbar = False 'ツールバー objIE.StatusBar = False 'ステータスバー objIE.StatusText = "テキスト" 'ステータステキスト Debug.WriteLine(objIE.StatusText)
objIE.AddressBar = False; //アドレスバー objIE.MenuBar = False; //メニューバー objIE.Toolbar = False; //ツールバー objIE.StatusBar = False; //ステータスバー objIE.StatusText = "テキスト"; //ステータステキスト Console.WriteLine(objIE.StatusText);
objIE.AddressBar = False 'アドレスバー objIE.MenuBar = False 'メニューバー objIE.Toolbar = False 'ツールバー objIE.StatusBar = False 'ステータスバー
InternetExplorerの終了処理
InternetExplorerを起動後、操作するアプリケーションを終了させてもInternetExplorerは終了せずに残ります。
アプリケーションの終了時にInternetExplorerも閉じるには、InternetExplorerに終了を指示する必要があります。
実装方法
以下のサンプルのように各メソッドを実行します。