Hay algunos métodos que puedes usar para verificar si la página ha terminado de cargarse. Aquí hay una selección con la que he tenido buenos resultados durante las pruebas:
Nombre del documento
Supervise la existencia del Safari document
que tiene el mismo nombre que el título de la página web, que (creo) solo se asigna después de que la página haya terminado de cargarse, hasta la cual punto que conserva el nombre que tenía anteriormente, o "Sin título" si es un documento creado recientemente:
tell application "Safari"
make new document with properties {URL:"https://csbsju.instructure.com"}
repeat until the document named ("Central Authentication Service " & ¬
"| College of Saint Benedict & Saint John's University") exists
end repeat
log "Finished loading"
end tell
El botón Iniciar sesión
Supervise la existencia del botón "Iniciar sesión" , dado que no puede hacer lo que debe hacer hasta que se haya creado ese elemento HTML en particular:
tell application "Safari"
make new document with properties {URL:"https://csbsju.instructure.com"}
tell front document to repeat until (do JavaScript ¬
"document.getElementById('btnLogin').id") as text is not ""
end repeat
log "Finished loading"
end tell
El botón Recargar de Safari >
Supervise propiedades particulares del botón Safari Recargar , que cambian según si una página está cargando o ha cargado :
tell application "Safari" to ¬
make new document with properties {URL:"https://csbsju.instructure.com"}
tell ¬
application "System Events" to tell ¬
process "Safari" to tell ¬
window 1 to tell ¬
toolbar 1 to tell ¬
groups to tell ¬
UI element 1 to ¬
set reload_button to a reference to ¬
(first button whose name is "Reload this page")
using terms from application "System Events"
repeat until the accessibility description ¬
of the reload_button ¬
contains "Reload this page"
end repeat
end using terms from
log "Finished loading"
Contenido de la página
Supervise si un texto específico aparece en el contenido de la página. En este caso, he elegido supervisar todo esto, pero en su lugar puede elegir elementos más pequeños. Los elementos que aparecen hacia el final de la página son los más adecuados:
tell application "Safari"
make new document with properties {URL:"https://csbsju.instructure.com"}
ignoring white space
tell front document to repeat until its text contains ¬
"Central Authentication Service Network Username: " & ¬
"Password: Warn me before logging me into other sites. " & ¬
"Copyright © 2017 - All Rights Reserved College of Saint " & ¬
"Benedict and Saint John's University"
end repeat
end ignoring
log "Finished loading"
end tell
Nombre de usuario & Contraseña campos
Como estos campos se completan automáticamente con el administrador de contraseñas de Safari , que solo ocurre cuando la página se ha cargado completamente, puede monitorear el contenido de texto del Nombre de usuario y Contraseña :
tell application "Safari"
make new document with properties {URL:"https://csbsju.instructure.com"}
tell front document to repeat
set a to (do JavaScript "document.getElementById('username').value") as text
set b to (do JavaScript "document.getElementById('password').value") as text
if length of (a & b) ≠ 0 then exit repeat
end repeat
log "Finished loading"
end tell