Il y a plusieurs méthodes que vous pouvez utiliser pour vérifier si la page a fini de se charger. En voici une sélection avec laquelle j'ai eu de bons résultats lors de mes tests :
Nom du document
Contrôler l'existence de la Safari document
qui a le même nom que le titre de la page web, qui (je crois) n'est attribué qu'une fois que la page a fini de se charger, jusqu'à ce qu'elle conserve le nom qu'elle avait auparavant, ou bien "Sans titre" s'il s'agit d'un document nouvellement créé :
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 Connexion bouton
Contrôler l'existence de la "Connexion" étant donné que vous ne pouvez pas faire ce que vous devez faire tant que cet élément HTML particulier n'a pas été créé :
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 Rechargez bouton
Surveiller les propriétés particulières de Safari 's Rechargez qui change selon qu'une page est chargement ou a chargé :
Remarque : ce document a été écrit et testé sous MacOS High Sierra ; cependant, pour MacOS Mojave, une modification mineure est nécessaire. Modifier UI element 1 to ¬
à UI element 2 to ¬
dans le code ci-dessous.
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"
Contenu de la page
Contrôler l'apparition d'un texte spécifique dans le contenu de la page. Dans ce cas, j'ai choisi de surveiller l'ensemble du texte, mais vous pouvez choisir des éléments plus petits à la place. Les éléments qui apparaissent vers la fin de la page sont les plus appropriés :
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
Nom d'utilisateur : & Mot de passe champs
Puisque ces champs sont remplis automatiquement par Safari (ce qui ne se produit qu'après le chargement complet de la page), vous pouvez surveiller le contenu textuel de la balise Nom d'utilisateur : y Mot de passe champs :
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