Attendre qu'une certaine page soit affichée, ou une autre

Questions sur de la programmation avancée avec WinTask
Richard
Posts: 1
Joined: 14 Mar 2016, 10:56

Attendre qu'une certaine page soit affichée, ou une autre

Postby Richard » 14 Mar 2016, 10:59

Bonjour,

J'ai un cas qui n'est pas couvert par UsePage. Avec UsePage, le script attend que la page spécifiée soit affichée avant de continuer. Dans mon cas, à un certain point de l'automatisation de mon site web, le script doit attendre qu'une certaine page soit affichée OU qu'une certaine autre le soit. Je connais les titres des deux pages possibles mais je ne vois pas comment faire un UsePage sur deux pages. Une idée ?

Support
Posts: 55
Joined: 11 Feb 2016, 09:26

Re: Attendre qu'une certaine page soit affichée, ou une autre

Postby Support » 15 Mar 2016, 10:07

Bonjour,

Je vous propose cette subroutine, j'ai mis des commentaires pour en expliquer le fonctionnement :

Code: Select all

Function usetwopages(page1$, page2$, timeout)
'Définition de variables locales pour stocker des données juste à l'intérieur de la fonction
local ret, buffer1, buffer2, t, exit
'Sauvegarde de la valeur de #Ignoreerrors avant l'appel de la fonction
buffer1=#IgnoreErrors
'Sauvegarde de la valeur de #ActionTimeout avant l'appel de la fonction
buffer2=#ActionTimeout
'Initialisation de #IgnoreErrors à 1 pour ignorer les erreurs le temps de l'exécution de la fonction
#IgnoreErrors=1
'Initialisationd de #ActionTimeout à 1 : une erreur est détectée au bout d'une seconde  lors de l'exécution de la fonction
#ActionTimeout=1
'Boucle pour détecter si c'est page1$ ou page2$ qui est affichée
repeat
   'Au bout d'une seconde, page1$ est trouvée, le code retour de UsePage est 0 et on force exit à 1 pour terminer la boucle
   ret=UsePage(page1$)
   if ret=0 then
      exit=1
   else
      'Si page1$ n'est pas trouvée, on teste le code retour de UsePage(page2$). Si le code retour est 0, page2$ est trouvée
      ret=UsePage(page2$)
      if ret=0 then
         exit=1
      else
         'Si ni page1$ ni page2$ ne sont trouvées, on attend 1 seconde, on incrémente l'index de la boucle et on recommence
         pause 1
         t=t+1
      endif
   endif
'La boucle continue tant que exit ne vaut pas 1 ou tant que l'index est inférieur au timeout passé en paramètre de la fonction
until exit=1 or t >= timeout
'On revient aux valeurs avant l'appel de la fonction
#IgnoreErrors=buffer1
#ActionTimeout=buffer2
'Si le script principal où cette fonction est appelée utilise #IgnoreErrors=0, valeur par défaut, on renvoie un message d'erreur
' et on arrête le script si aucune des deux pages n'est trouvée au bout du timeout
if exit=0 then
   if #IgnoreErrors=0 then
      msgbox("Erreur dans 'Usetwopages'",16,"Arrêt du script")
      stop
   else
   'Si le script principal utilise #IgnoreErrors=1,il ne faut pas arrêter le script si aucune des 2 pages n'est trouvée, mais on
   'renvoie un code retour, ici -5
      ret=-5
   endif
endif
Usetwopages=ret
EndFunction
'-----------------------------------------------
'Exemple d'appel
#IgnoreErrors=1
'Titre de la première page à chercher
page_google$="Google"
'Titre de la deuxième page
page_wintask$="Macro et Capture de données avec WinTask"
'Appel de la fonction avec un timeout de 10
ret=usetwopages(page_google$, page_wintask$, 10)
'Affichage du code retour de la fonction
msgbox(ret)


Cordialement,
Support WinTask


Return to “Scripts complexes avec WinTask”

Who is online

Users browsing this forum: No registered users and 1 guest