Hay algunos métodos que puede utilizar para comprobar 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
Vigilar la existencia de la Safari document
que tiene el mismo nombre que el título de la página web, que (creo) sólo se asigna después de que la página haya terminado de cargarse, hasta ese momento conserva el nombre que tenía anteriormente, o "Sin título" si se trata de un documento recién creado:
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 Inicio de sesión botón
Vigilar la existencia de la "Login" dado que no puede hacer lo que necesita 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
Safari 's Recarga botón
Controlar las propiedades particulares de Safari 's Recarga que cambia en función de si una página es cargando o tiene cargado :
Nota: Esto fue escrito y probado bajo MacOS High Sierra; sin embargo, para MacOS Mojave se requiere una edición menor. Cambiar UI element 1 to ¬
a UI element 2 to ¬
en el código que aparece a continuación.
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 la aparición de un texto específico dentro del contenido de la página. En este caso, he optado por monitorizarlo todo, pero puedes elegir elementos más pequeños en su lugar. 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
Dado que estos campos son rellenados automáticamente por Safari que sólo se produce cuando la página se ha cargado por completo, se puede controlar el contenido de texto del Nombre de usuario y Contraseña campos:
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