Perché un applescript non rileva il successo dopo averlo creato trascinando da una registrazione di "watch me do"?

1

Background: il mio obiettivo qui è quello di raccogliere i dati sulla velocità di connessione che il mio ISP accetterà, così posso dimostrare un calo drammatico della velocità di connessione di 1-5 minuti che ho riscontrato immediatamente dopo il passaggio a questo nuovo ISP (stessa attrezzatura - senza precedenti incongruenze di tale velocità). Accettano (e possono accedere) solo i risultati del test della velocità di connessione utilizzando il loro sito web di test di velocità quando vengono eseguiti da un computer cablato (ad esempio non uno collegato via WiFi).

Così ho creato un rapido flusso di lavoro automatico per l'automaker che generalmente funziona ... a meno che la velocità di connessione non venga eliminata e il sito Web non risponda, il che ostacola il mio intero obiettivo!

Inizialmente avevo registrato le seguenti azioni iniziali in un watch-me-do:

  1. Fai clic su Safari nel dock
  2. Fai clic su una cartella dei preferiti
  3. Fai clic sul segnalibro per il sito web del test di velocità
  4. Fai clic sul pulsante di avvio del test della velocità

che è seguito dall'elaborazione dei risultati che generalmente funziona e è tollerante ai guasti. Tuttavia, ci sono 2 cose che possono accadere che portano a un errore fatale nel flusso di lavoro:

  1. La pagina web non viene caricata
  2. La pagina web viene caricata ma il pulsante di avvio del test di velocità non viene caricato (la pagina mostra inizialmente un grafico di caricamento in cui verrà visualizzato il pulsante)

Sto bene con il fallimento occasionale del test. Ho un codice che analizza il testo sulla pagina e tali risultati vengono visualizzati nel registro come un errore di test con un timestamp.

Tuttavia, lo script genera un errore quando non è in grado di fare clic sul pulsante e tutti gli ulteriori test si interrompono, quindi ho provato a trascinare l'azione del pulsante del watch-me-do nel flusso di lavoro, che diventa un applescript modificabile. Ho pensato di poter modificare lo script per modificare la chiamata di errore all'interno del blocco on error . Il workaround risultante funziona, ma ora sembra che non pensi MAI che il pulsante venga cliccato con successo e alla fine prenda il time-out, entri in on error e faccia la riga che ho aggiunto: exit repeat .

Quindi cosa sta succedendo qui? Perché lo script sembra non rilevare che l'azione di clic è stata eseguita correttamente?

Ecco il codice dall'azione del pulsante clic trascinato dal watch-me-do:

on run {input, parameters}
    -- Click the “Start” button.
    tell application "Safari" to activate  --I added this line
    delay 6.095782
    set timeoutSeconds to 2.0
    set uiScript to "click UI Element \"Start\" of group 1 of group 2 of UI Element 1 of scroll area 1 of group 1 of group 1 of tab group 1 of splitter group 1 of window \"Speed Test\" of application process \"Safari\""
    my doWithTimeout(uiScript, timeoutSeconds)
    return input
end run

on doWithTimeout(uiScript, timeoutSeconds)
    set endDate to (current date) + timeoutSeconds
    repeat
        try
            run script "tell application \"System Events\"
" & uiScript & "
end tell"
            exit repeat
        on error errorMessage
            if ((current date) > endDate) then
                exit repeat  --I replaced an error call here
            end if
        end try
    end repeat
end doWithTimeout
  • Ho cancellato i particolari dell'ISP (vedi i commenti sotto).
posta hepcat72 19.10.2018 - 17:15
fonte

0 risposte

Leggi altre domande sui tag