I doubt there is a completely fool-proof way of doing this, short of having a excessive manual pause time.
So, here is my attempt to provide a reusable Sub-Macro that will open a URL and wait until it has completed loading. You can call this Sub-Macro from any Macro using the Execute a Macro action (KM Wiki).
Please let me know if you have any issues or suggestions for improvement concerning this macro.
Below I have also uploaded a Macro to test this Sub-Macro.
UPDATED: 2018-08-06 13:21 GMT-5
• Fix broken link in Download link
MACRO: Open Web Page & Pause Until Load Complete [Sub-Macro]
You may call this sub-macro with a parameter like this:
<OpenWhere>,<URL>
where
<OpenWhere> is one of the following:
"win" -- open the URL in a new window
"tab" -- open the URL in a new tab
<URL> -- URL to be opened
For example:
win,http://www.apple.com
OR, just
<URL>
and the URL will be opened in the existing window/tab.
If no Parameter is provided, then the Sub-Macro will CANCEL itself and the calling macro.
Here's the macro to test the sub-macro.
Change the Parameter of the Execute Macro to test different URLs.
MACRO: Web TEST Sub-Macro Pause Until Load Complete
#### DOWNLOAD:
<a class="attachment" href="/uploads/default/original/3X/8/e/8e3dace54c2d129afcecae91fc521a7e2c9b734c.kmmacros">Web TEST Sub-Macro Pause Until Load Complete.kmmacros</a> (36 KB)
**Note: This Macro was uploaded in a DISABLED state. You must enable before it can be triggered.**
---

Here is a simpler script for Google Chrome, that may be almost as good as the above.
It tends to wait about 1 sec less, so it may be a bit short, depending on your needs.
OTOH, the above script may just be taking longer than is necessary. Hard to say.
This uses the "loading" property of a Chrome Tab. Unfortunately, there is no equivalent (that I have found) for Safari.
MACRO: TEST Wait for Chrome Page to Fully Load Using Simple Script
#### DOWNLOAD:
<a class="attachment" href="/uploads/default/original/3X/e/8/e8d230133d96a5899f306b84cd03450b3d2d730d.kmmacros">TEST Wait for Chrome Page to Fully Load Using Simple Script.kmmacros</a> (3.9 KB)
**Note: This Macro was uploaded in a DISABLED state. You must enable before it can be triggered.**
---
<img src="/uploads/default/original/3X/6/1/6105eef875ec95b0d5136e53099e0169dac428cd.png" width="546" height="733">
---
### AppleScript to Pause Until Chrome Page is Loaded
```applescript
property delayInterval : 0.1
property maxWaitTime : 30.0
set elapTime to 0.0
tell application "Google Chrome"
repeat until (loading of active tab of front window is false)
delay delayInterval
set elapTime to elapTime + delayInterval
if (elapTime > maxWaitTime) then exit repeat
end repeat
display notification "Page is loaded in " & elapTime & " sec"
end tell
```
Hey there JMichaelTX. I have been using KM for a while and have a super complicated arrangement on my work Mac here and often have to run a ton of scripts to help keep up with the hustle and bustle of incoming applicants here and think i may have a k.i.s.s. i suppose way to do this here as i have constant pop-ups and window changes and modifications always needed here and i think its as simple as doing:
it seriously sped up my lengthy laggy caveman automations by great lengths and only waits until the webpage or atleast until the actions i needed done on it complete then closes the window.
However, the Pause Until will always immediately complete since the above Wait for Google... will always return an OK, even when the page has not actually completed loading.
One shortcut I have found is to use JavaScript in Browser to test for existence of a specific web page HTML element that you must have loaded.
Looks like the latest Forum software update has changed some of the markdown codes. I think I've fixed things now, so let me know if you find any issues.
There is a simple way to check if a Chrome page has finished loading:
tell application "Google Chrome" to tell the second tab of its first window to reload -- Reloads the desired tab, You can set it to "active" tab
delay 2 -- this line can be removed if You wish to start checking instantly
tell application "Google Chrome"
repeat until (loading of tab 2 of window 1 is false) -- checks if the desired tab has finished loading, can be replaced with "active" tab
1 + 1
delay 0.5
end repeat
set status to loading of tab 2 of window 1
end tell
Sadly, it doesn't work with Safari, still keep looking for a way to perform this action in Safari