JScript / VBScript (WSH)で,IEを自動操作しよう
JScript / VBScriptでも,IEを自動操作(オートメーション)できる。
テキストファイルをダブルクリックするだけで,ブラウザが動く。
しかも,ブックマークレットを自動実行することもできる。
つまり,表示中のWebページに対してJavaScriptを自動的に実行し放題。
下記は .js / .vbs の両スクリプトでのサンプルコード。
内容は,
Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作)
http://language-and-engineering.hatenablog.jp/entry/20090710/p1
と同じく,
というもの。
(1)VBScript版
ie.vbs
use_ie Sub use_ie() ' IE起動 Set ie = CreateObject("InternetExplorer.Application") ie.Navigate "http://www.google.co.jp/" ie.Visible = True waitIE ie ' 検索キーワードを入力 ie.Document.getElementById("q").Value = "ホゲラッチョ" WScript.Sleep 100 ' 検索ボタンクリック ie.Document.all("btnG").Click waitIE ie ' 1件目のサイトのタイトルを表示 MsgBox ie.Document.getElementById("res") _ .getElementsByTagName("li")(0) _ .getElementsByTagName("h3")(0) _ .innerText ' 制御を破棄 ie.Quit Set ie = Nothing End Sub ' IEがビジー状態の間待ちます Sub waitIE(ie) Do While ie.Busy = True Or ie.readystate <> 4 WScript.Sleep 100 Loop WScript.Sleep 1000 End Sub
VBA版と違うのは,sleepがWindows APIではなくWScript.Sleepになったことぐらい。
(2)JScript版
ie.js
use_ie(); function use_ie() { // IE起動 var ie = WScript.CreateObject("InternetExplorer.Application") ie.Navigate( "http://www.google.co.jp/" ); ie.Visible = true; waitIE( ie ); // 検索キーワードを入力 ie.document.getElementsByName("q")[0].value = "ホゲラッチョ"; WScript.Sleep( 100 ); // 検索ボタンクリック ie.document.getElementsByName("btnK")[0].click(); waitIE( ie ); // 1件目のサイトのタイトルを表示 WScript.Echo( ie.document.getElementById("rso") .getElementsByTagName("h3")[0] .getElementsByTagName("span")[0] .innerText ); // 制御を破棄 ie.Quit(); ie = null; } // IEがビジー状態の間待ちます function waitIE( ie ) { while( ( ie.Busy ) || ( ie.readystate != 4 ) ) { WScript.Sleep( 100 ); } WScript.Sleep( 1000 ) } /* 注:この記事を執筆した当時は,下記のようなコードが動作していた。現在とはDOM構造が異なる。 // 検索キーワードを入力 ie.document.getElementById("q").value = "ホゲラッチョ"; WScript.Sleep( 100 ); // 検索ボタンクリック ie.document.all("btnG").click(); waitIE( ie ); // 1件目のサイトのタイトルを表示 WScript.Echo( ie.document.getElementById("res") .getElementsByTagName("li")[0] .getElementsByTagName("h3")[0] .innerText ); */
ブックマークレットについては,「制御を破棄」の手前で
ie.Navigate( "javascript:(function(){alert(document.body.innerHTML)})();" );
を実行してみよう。
ブックマークレットが実行される。
所感
JavaScriptの世界に持って来る事ができれば,もうこっちのものだ。
関連する記事:
[IEの自動操作]記事一覧
http://d.hatena.ne.jp/language_and_en...
Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作)
http://language-and-engineering.hatenablog.jp/entry/20090710/p1
WSH/JScriptで,Outlookを操作しよう (受信メール内からURLを抽出してみる)
http://language-and-engineering.hatenablog.jp/entry/20100324/p1