Esistono alcuni metodi che è possibile utilizzare per verificare se la pagina ha completato il caricamento. Ecco una selezione con cui ho ottenuto buoni risultati durante i test:
Nome documento
Monitora l'esistenza del Safari document
che ha lo stesso nome del titolo della pagina web, che (credo) viene assegnato solo dopo il caricamento della pagina, fino a che punta mantiene il nome che aveva in precedenza, o "Senza titolo" se si tratta di un documento appena creato:
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
Il pulsante Login
Controlla l'esistenza del pulsante "Accedi" , dato che non puoi fare ciò che devi fare fino a quando quel particolare elemento HTML non è stato creato:
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 del pulsante Ricarica
Monitora particolari proprietà del pulsante Safari Ricarica , che cambia a seconda che una pagina sia in caricamento o che sia caricata :
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"
Contenuto della pagina
Monitorare la visualizzazione di un testo specifico all'interno del contenuto della pagina. In questo caso, ho scelto di monitorare tutto, ma puoi scegliere invece elementi più piccoli. Gli elementi che appaiono verso la fine della pagina sono i più adatti:
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
Nome utente & Campi Password
Poiché questi campi vengono compilati automaticamente dal gestore della password di Safari , che si verifica solo quando la pagina è completamente caricata, è possibile monitorare il contenuto del testo del nome utente e campi :
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