Script to collect the duration in seconds taken to download a webpage

Guys. I’ve had a nose around this great scripting community to try and find this, apologies if I have overlooked a previous post.

I’m looking to load a webpage in safari, say www.cnn.com and record the data/time the request was made. Then record the date/time the page was fully completed and give the duration in seconds/milliseconds in a log file? Thanks, Martin

Model: iMac G5 and Intel based, MacMini G4
AppleScript: 2.1.1.81
Browser: Safari 419.3
Operating System: Mac OS X (10.4)

Hi Martin,

try this (it requires the Scripting Addition GetMilliSec)

property httpURL : "http://www.cnn.com"

set logfile to ((path to desktop as Unicode text) & "logfile.txt")
set t to GetMilliSec
tell application "Safari" to open location httpURL
if page_loaded(200) is false then error number -128
set t1 to ((GetMilliSec) - t) / 1000
write_to_disk from (((current date) as string) & ": " & httpURL & " opened in " & t1 & " seconds" & return) into logfile


on write_to_disk from theData into targetFile
	set ff to open for access file targetFile with write permission
	write theData to ff starting at eof
	close access ff
end write_to_disk

on page_loaded(timeout_value)
	delay 1
	repeat with i from 1 to the timeout_value
		tell application "Safari"
			if (do JavaScript "document.readyState" in document 1) is "complete" then
				return true
			else if i is the timeout_value then
				return false
			else
				delay 0.1
			end if
		end tell
	end repeat
	return false
end page_loaded

Stefan, I’m sure this script is more than suitable but I’m having trouble with the Script Addition “getmillisec” and getting it to be recgnised by the script.

Is there any chance you could give me a step by step on how to install the additions onto my OS 10.4 system.
I have the unstuffed “GetMilliSecOSAX1.0.1” on my desktop.

Currently, as I’m sure you’d expect, the error the script is returning is : “The variable GetMilliSec is not defined”

Your help is appreciated. Martin (it’s a big old lurning curv man) :slight_smile:

No problem. :slight_smile:

In the GetMilliSecOSAX folder there are three Scripting Addition files, we need GetMilliSec.osax
¢ Quit Script Editor
¢ Put GetMilliSec.osax into /Library/ScriptingAdditions/
¢ Restart Script Editor

OK Stefan, done as instructed, the script compiles ok but I still get the AppleScript Error “The variable GetMilliSec is not defined” when I run it. The variable “getmillisec” is highlighted alongside the line of code

set t to GetMilliSec

Do you have any suggestions Stefan as to what might be causing this other than how I have copied the getmillisec.OSAX file into Library/ScriptingAdditions?

I’ve also tried putting it into a few other locations such as root\Library (and then created a “ScriptingAdditions” folder, as I did for root\Users\username\Library.

The only folder that had an existing “ScriptingAdditions” folder was root\System\Library. I’ve copied the file into 3 locations now and still the script error persists. Sorry to go on…:wink: Thanks again, Martin

H Martin,

this is strange. It doesn’t matter, which Scripting Additions’ folder you use to put the file in.
I prefer /Library/Scripting Additions/, in this folder the OSAX is available for all users.
Normally the Scripting Addition will be recognized, when Script Editor will be quitted and restarted.

I guess, the problem is, you have an Intel Mac and the OSAX is a PPC extension.
Maybe other members of this board have some experience with a PPC OSAX on a Intel machine.

A different approach is to use AppleScript’s time, but the smallest unit is seconds
Replace
set t to GetMilliSec with set t to (current date) and
set t1 to ((GetMilliSec) - t) / 1000 with set t1 to (current date) - t

Without GetMilliSec, there’s always this Python script (which seems to have an overhead of about 200 ms for a call):
I think it’s the time from the unix epoch.

set t1 to do shell script "python -c 'import time; print time.time();'"