Pourquoi un libellé de pomme ne détecte-t-il pas le succès après la création via un glisser-déposer à partir d'un enregistrement «regardez-moi»?

1

Contexte: Mon objectif ici est de collecter les données de vitesse de connexion que mon fournisseur de services Internet acceptera afin de pouvoir démontrer des baisses spectaculaires de la vitesse de connexion de 1 à 5 minutes que je connaissais immédiatement après le passage à ce nouveau fournisseur de services Internet (même équipement - sans précédent). ces incohérences de vitesse). Ils n'acceptent (et ne peuvent accéder) aux résultats des tests de vitesse de connexion en utilisant leur site Web de test de vitesse que lorsqu'ils sont exécutés à partir d'un ordinateur câblé (c'est-à-dire pas un ordinateur connecté via Wifi).

J'ai donc créé un petit flux de travail automate qui fonctionne généralement… sauf si la vitesse de connexion diminue et si le site Web ne répond pas - ce qui contrecarre tout mon objectif!

J'avais initialement enregistré les actions initiales suivantes dans Watch-me-do:

  1. Cliquez sur Safari dans le dock
  2. Cliquez sur un dossier de favoris
  3. Cliquez sur le signet pour le site Web de test de vitesse
  4. Cliquez sur le bouton de démarrage du test de vitesse

qui est suivi du traitement des résultats qui fonctionne généralement et est tolérant aux pannes. Cependant, il peut arriver 2 choses qui entraînent une erreur fatale dans le flux de travail:

  1. La page Web ne se charge pas
  2. La page Web se charge mais le bouton de démarrage du test de vitesse ne se charge pas (la page affiche initialement un graphique de chargement où le bouton apparaîtra)

Je vais bien avec le test occasionnel échouant. J'ai du code qui analyse le texte de la page et de tels résultats apparaissent dans le journal comme un échec de test avec un horodatage.

Cependant, le script génère une erreur lorsqu'il ne peut pas cliquer sur le bouton et que tous les tests s'arrêtent. J'ai donc essayé de faire glisser l'action clic-bouton depuis le point d'observation vers le flux de travail, ce qui devient un AppleScript éditable. J'ai pensé que je pouvais éditer le script pour changer l'appel d'erreur à l'intérieur du on errorbloc. Le genre de solution résultant des travaux, mais il semble maintenant qu'il pense jamais le bouton est cliqué avec succès et se frappe finalement le temps mort, entre dans on erroret exécute la ligne I ajouté: exit repeat.

Que se passe-t-il? Pourquoi le script semble-t-il ne pas détecter que l'action de clic a été effectuée avec succès?

Voici le code de l'action click du bouton tiré du 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
  • J'ai expurgé les détails des FAI (voir les commentaires ci-dessous).
hepcat72
la source
TLDR. Quelle est l'URL du site Web pour le test de vitesse?
CJK
1
Eh bien, je ne voulais pas révéler le fournisseur de services Internet pour deux raisons. 1. Ils semblent avoir consenti des efforts pour empêcher la création de scripts de leur page Web. Je ne voulais donc pas qu'ils trouvent ce message et tentent de le contrecarrer. 2. Je ne voulais pas dénigrer publiquement ce fournisseur de services Internet pour manque de cohérence avant de pouvoir le montrer avec les résultats de mes tests. Je n'utilise pas l'un de leurs routeurs pris en charge, il est donc possible que le problème soit dû à une incompatibilité. C'est pourquoi ma question concerne le fait de cliquer sur un signet au lieu de cliquer sur le bouton Démarrer le test.
hepcat72
Et désolé pour la longueur de la question. La concision n'est pas l'un de mes points forts.
hepcat72
Vous voulez juste cliquer sur le signet dans Safari ?
CJK
1
Le comportement semble similaire, mais les solutions sont différentes. D'une part, vous n'avez pas besoin de cliquer sur le signet Safari pour accéder à la page Web. AppleScript peut vous y conduire seul, en contrôlant directement Safari . Cela serait-il utile si je vous montrais comment faire cela?
CJK