- ベストアンサー
URL表示、検索結果表示時間について
インターネットの画面が表示されるまでの時間を、調べることができるツールを探しています。具体的には、 (1)あるURLを入力し、その画面が表示されるまでの時間を調べ、結果を何 かのログに残す。 (2)その表示された画面で、ある検索を行い、検索結果が表示されるまでの時 間結果を何かのログに残す。 (3)上記(1)(2)の処理を毎時定時に行う。 このような動きをするツール(ソフト)を探しています。 ご存知のかたお知らせ願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
VBScriptで書いてみました。WinowsXPで動作確認済みです。 実行すると毎時0分に計測を始めます。 Googleを開き「油淋鶏」を検索します。(適当に変更してください) "log.txt"と言うテキストに結果を出力します。 無限ループになっていますので、止める時は、タスクマネージャでプロセス"wscript.exe"を止めてください。 以下ソース Const URL = "http://www.google.co.jp/" Const InputName = "q" '入力するInputの名前 Const InputValue = "油淋鶏" '入力するデータ Const FormName = "f" '送信するFormの名前 'On Error Resume Next '毎時0分にチェックする h = -1 Do if (Hour(time) <> h) and (Minute(time)) = 0 then h = Hour(time) main() end if WScript.sleep 1000 Loop 'チェックルーチン本体 Sub main() 'IEを起動して表示する Set AppIE = WScript.CreateObject("InternetExplorer.application") If Err.Number <> 0 Then WScript.Echo "IEオープンエラー: " & Err.Description Exit Sub End IF AppIE.Visible = True '完了するまで待つ wait_ie AppIE 'URLを開き完了するまでの時間を計測 StartTimer = Timer() 'URLを開く AppIE.Navigate URL '完了するまで待つ wait_ie AppIE time1 = Timer() - StartTimer 'Documentを取得する Set Doc = AppIE.Document 'Inputにデータを入力する For Each obj In Doc.getElementsByTagName("input") If obj.Name = InputName Then obj.Value = InputValue End If Next '検索(Formを送信)し完了するまでの時間を計測 'Formを送信する For Each obj In Doc.forms If obj.Name = FormName Then StartTimer = Timer() obj.submit Exit For End If Next '完了するまで待つ wait_ie AppIE time2 = Timer() - StartTimer 'IEを終了する AppIE.Quit strMsg = "" & now() & ", Open = " & FormatNumber(time1,3) & ", Submit = " & FormatNumber(time2,3) & vbCRLF WriteLog(strMsg) End Sub 'IEの処理が終了するのを待つサブルーチン Sub wait_ie(AppIE) Do Until AppIE.ReadyState >= READYSTATE_COMPLETE WScript.Sleep(1) Loop Do While AppIE.Busy WScript.Sleep(1) Loop End Sub 'ログを書き出すサブルーチン Sub WriteLog(str) Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If Err.Number = 0 Then Set objFile = objFSO.OpenTextFile("log.txt", 8, True) If Err.Number = 0 Then objFile.Write(str) objFile.Close Else WScript.Echo "ファイルオープンエラー: " & Err.Description End If Else WScript.Echo "エラー: " & Err.Description End If Set objFile = Nothing Set objFSO = Nothing End Sub
その他の回答 (2)
- venzou
- ベストアンサー率71% (311/435)
>試しましたが、以下のようなエラーではじかれます。 >Const URL = "http://www.google.co.jp/" この行ですが、このページに貼り付けたときに自動的にリンクが設定されてしまうので、 一度 = 以降を削除して、アドレスの部分を手で入力し直して下さい。
お礼
ありがとうございました。ご指摘のとおりでした。 期待どおり作動しました。ありがとうございます。
- venzou
- ベストアンサー率71% (311/435)
>どのように使用すればよいのか、ご教授願います。 #1のソースをテキストファイルとして保存してください。 そしてファイル名を"test.vbs"として下さい。(名前はなんでも結構ですが、拡張子は".vbs"です) そのファイルをダブルクリックで実行できます。 注)スクリプト実行中は、タスクバーなどには現れません。 タスクマネージャのプロセスに"wscript.exe"があればスクリプトは動いています。時間が来るまで何もしませんので、動作確認するならソースを変更してください。 >'毎時0分にチェックする >h = -1 >Do >if (Hour(time) <> h) and (Minute(time)) = 0 then >h = Hour(time) >main() >end if >WScript.sleep 1000 >Loop ↑この部分を下記に変更 '今すぐ一回だけチェックする main() WindowsのバージョンによってはVBScriptを実行するために、下記のダウンロードが必要かもしれません。
お礼
>#1のソースをテキストファイルとして保存してください。 >そしてファイル名を"test.vbs"として下さい。(名前はなんでも結構ですが、拡張子は".vbs"です) >そのファイルをダブルクリックで実行できます。 試しましたが、以下のようなエラーではじかれます。 スクリプト:C:\***** 行: 1 文字: 40 エラー: 文字が正しくありません。 コード: 800A0408 ソース: Microsoft VBScript コンパイルエラー お手数です、再度お願いできますでしょうか?
お礼
詳細なご返答まことにありがとうございます。 しかし、VBScriptについてまったく知識がありません。 どのように使用すればよいのか、ご教授願います。