Page 1 of 1

Script qui se met sur pause en cas d'erreur

Posted: 07 May 2020, 22:26
by nicopro55
Bonjour,

J'ai réalisé un script qui dans une procédure doit réaliser un copier/coller de ce qu'il y a à l'écran et noter le résultat dans une variable.

Cependant, il peut arriver que le script ne parvienne pas à faire de copier/coller (page trop longue à charger ou perte de connexion).

Dans les paramètres "Exceptions", j'ai donc demandé au script un "go to line" pour entrer dans une boucle où il signale l'erreur. Le seul problème c'est que lorsqu'une erreur arrive, le script se met automatiquement en pause... Je dois cliquer pour le relancer et là il entre bien dans le boucle sans problème.

Est-ce qu'il y aurait moyen d'éviter que le script se mette en pause lorsqu'il y a une erreur et qu'il continue sans mon intervention ?

Merci d'avance

Re: Script qui se met sur pause en cas d'erreur

Posted: 08 May 2020, 10:14
by francois
Bonjour,

Pour faire ce type d'action, on peut :
1) Lancer l'URL
2) Tester si elle est bien chargée
3) Faire un copier-coller de la page chargée.

Exemple de test du chargement effectif d'une page :
viewtopic.php?f=25&t=18365

Cordialement
François

Re: Script qui se met sur pause en cas d'erreur

Posted: 09 May 2020, 18:57
by nicopro55
Bonjour,

Merci pour votre aide mais l'erreur peut survenir autrement que lorsque la page n'est pas totalement chargée (pas sur la bonne page pour une raison x ou y par exemple).

Est-ce qu'il n'y a pas moyen de demander au script de continuer quoiqu'il arrive ? Je pensais que le fait de mettre des "go to line" aux 3 exceptions possibles (erreur, paramètre incorrect, timeout) plutôt que "stop execution" résolvait le problème mais si c'est pour que le script se mette en pause avant d'exécuter le "go to line", je ne vois pas l'intérêt...

Re: Script qui se met sur pause en cas d'erreur

Posted: 11 May 2020, 10:01
by nicopro55
Ce qui est étrange c'est que je ne parviens pas à reproduire le bug de manière intentionnelle. J'ai isolé la partie du code qui réalisait le copier/coller et utilisait cela comme variable (après certaines transformation comme ".split(":")"), mais même si je le lance avec le presse papier vide sur une page blanche il va bien dans la boucle pour notifier l'erreur sans se mettre en pause... Du coup je ne sais pas dans quelles conditions le script se met en pause...

Cependant, je pense avoir trouvé une solution de contournement grâce aux fonctions "try" et catch" qui me permettent de trouver une parade si jamais il y a une erreur lors de l'application du ".split(":")" par exemple.

Merci tout de même pour la vérification du chargement de la page, ça me sera bien utile dans d'autres parties de mon code :D

Et félicitations pour ce logiciel, c'est un petit bijou auquel je ne vois pas de limitations !

Re: Script qui se met sur pause en cas d'erreur

Posted: 12 May 2020, 14:27
by francois
Bonjour,

Les félicitations reviennent à JMGR qui a conçu et réalisé Actiona.

Pour ce qui est de votre souci, je suis persuadé - mais ce n'est pas facile à reproduire - que
le problème vient lorsque le Copier/coller se fait alors que la page est en cours de chargement.

Intuitivement je dirais qu'on demande de copier quelque chose d'instable.
Et dans ce cas, Actiona "perdrait la main".
D'où la non prise en compte dans l'exception "délai écoulé".

Re: Script qui se met sur pause en cas d'erreur

Posted: 29 May 2020, 22:43
by nicopro55
Bonjour,

En fait le copier/coller en question intervient une vingtaine de fois dans le script et j'ai remarqué que c'était toujours exactement à la même ligne du script que le problème se produisait aléatoirement. Il se trouve que, juste avant cette ligne en question, il y a un autre copier/coller d'une autre chaîne de caractère ne contenant pas le caractère ":". Or je demande ensuite au script un .split(":"). Je pense que le soucis du copier/coller intervient aléatoirement dans le script mais il a à chaque fois dans le presse-papier une chaîne de caractère contenant le caractère ":" donc il parvient un peu chanceusement à retomber sur ses pattes, sauf à la fameuse ligne citée plus haut.

Cependant j'ai réussi à m'en tirer grâce aux fonctions "try" et catch". Je n'ai plus eu de problèmes depuis une dizaine de jours :)

Re: Script qui se met sur pause en cas d'erreur

Posted: 29 May 2020, 23:04
by nicopro55
François,

Je suis en train d'essayer d'intégrer le test de chargement de page que vous m'avez partagé et je vois quand dans votre exemple il est nécessaire que la page soit fermée avant d'effectuer le test. Est-ce qu'il serait possible de faire le test même si la page est déjà ouverte ? Par exemple on rafraîchi la page et on attend qu'elle soit complètement chargée pour effectuer l'action suivante.

Cordialement,
Nicolas

Re: Script qui se met sur pause en cas d'erreur

Posted: 01 Jun 2020, 07:38
by francois
Bonjour,

Dans l'exemple donné, il ne faut pas que la page soit déjà ouverte .
viewtopic.php?f=25&t=18365

Pour que le script ne fasse pas de contrôle, il faut enlever les lignes suivantes ( situées dans la 1er action) :

Code: Select all

var windows = Window.find({
  title:prefixe_nom_page + "*",
  titleMode: Window.Wildcard
});	
if (windows.length>0 ){
   Console.print("La fenetre " + prefixe_nom_page + " est déjà ouverte. \r\n Veuillez la fermer" )
   Execution.stop()
}

Re: Script qui se met sur pause en cas d'erreur

Posted: 02 Jun 2020, 22:49
by nicopro55
Bonjour François,

Merci pour votre aide, c'est bien ce que j'avais déjà tenté mais ça ne semble pas fonctionner.

Quand je demande au script d'ouvrir lui même l'URL il semble bien attendre que la page soit totalement chargée pour afficher le message "on peut passer à la suite". Par contre, quand l'URL est déjà ouverte et qu'avant la vérification de chargement je clique sur un lien de la page, il met directement que la page est chargée alors qu'il y a toujours des éléments de la page en cours de chargement (il y a d'ailleurs toujours le symbole "chargement" à gauche du titre de la page). J'ai bien mis un petit délais (200 ms) après le clic sur le lien de la page afin qu'il ne fasse pas la vérification de chargement trop rapidement.

EDIT : en fait c'est bien le délais après le clic qui posait problème. En mettant par exemple 1500 ms (afin qu'il ne fasse pas sa vérification trop vite) le script attend bien que la page soit totalement chargée pour afficher le message "on peut passer à la suite". J'avais déjà mis à plusieurs endroits dans mon script des temporisations correspondant au délais quand la connexion est optimale et grâce cela je vais encore pouvoir l'améliorer dans les cas où la connexion est un peu faiblarde ! :D Un grand merci pour votre aide et pour votre travail sur ce forum, je me répète mais ce logiciel est vraiment un petit bijou !

Cordialement,
Nicolas