Apple - Connection is invalid error when running Applescript and Safari
You need to swap the position of the activate
line of code with the if not (exists document 1) then reopen
line of code.
Example:
tell application "Safari"
if not (exists document 1) then reopen
activate
tell front document
set URL to "http://example.com"
repeat until length of (source as text) is not 0
delay 0.5
end repeat
do javascript "document.body.innerText"
end tell
end tell
The screenshot of the Script Editor, below, was run with Safari open and without any windows opened.
First I had to check "[√] Show Develop menu in menu bar" (Safari > Preferences… > Advanced) and then on the Develop menu click "Allow JavaScript from Apple Events". Next I copied and pasted your AppleScript code in Script Editor and clicked the Run the Script button and it ran without error and returned the text of the http://example.com web page. However Safari was closed when I ran the script the first time.
After reading your question again, I was able to reproduce the error by having Safari open without any windows open. I then looked more throughly at your code and noticed activate
was before if not (exists document 1) then reopen
and activate
needs to be after it to avoid the error.