Un script qui active un "bouton moderne" [Resolu] - VB/VBA/VBS - Programmation
Marsh Posté le 17-12-2015 à 10:09:00
Je me demande si ça serait pas plus simple à faire avec un outil comme AutoIt ?
Marsh Posté le 17-12-2015 à 14:47:33
Je pense que ce "bouton" est "surveillé" par du Javascript, il doit y avoir un "eventhandler" ou quelque chose comme ça quelque part dans le code de la page. Désactive donc le JS dans ton navigateur et regarde si ça fonctionne toujours (ou si la page change d'apparence). Si c'est bien du JS faut regarder le code de près et voir ce qu'il fait pour voir si c'est possible d'imiter ça en VBS.
edit: Dans ta fenêtre Explorateur DOM il y a un tab Événmts (événements, à droite), ça dit quoi quand tu cliques dessus?
Marsh Posté le 17-12-2015 à 23:09:38
rufo a écrit : Je me demande si ça serait pas plus simple à faire avec un outil comme AutoIt ? |
Je connais pas encore, quel serait l'avantage de cet outil ?
rat de combat a écrit : Je pense que ce "bouton" est "surveillé" par du Javascript, il doit y avoir un "eventhandler" ou quelque chose comme ça quelque part dans le code de la page. Désactive donc le JS dans ton navigateur et regarde si ça fonctionne toujours (ou si la page change d'apparence). Si c'est bien du JS faut regarder le code de près et voir ce qu'il fait pour voir si c'est possible d'imiter ça en VBS. |
Ca dit ça :
Marsh Posté le 17-12-2015 à 23:14:08
unisev a écrit : |
AutoIt permet de simuler des actions faites par une personne sur l'IHM : déplacement de souris, envoi de touches clavier... Ca pourrait donc remplacer les actions que tu ferais, toi, dans l'IHM.
Marsh Posté le 17-12-2015 à 23:28:49
Ok mais est-il plus simple ou mieux documenté que le VBS ?
Ce soft a-t-il une fonction de "Capture" de "macro" ? pourquoi s'en sortirait-il mieux ?
Je suis en train de le tester et l'IDE ne me fait pas rêver...
Marsh Posté le 18-12-2015 à 09:38:57
Le langage est proche du VB/VBA. L'IDE, c'est un simple éditeur de texte (Scite). le codage n'est pas bien compliqué et l'aide pas mal faite. Avec les fonctions Run(), Send(), WinWait(), MouseClick() et peut-être Sleep(), tu devrais arriver à tes fins.
Mais ici, c'est le topic "programmation", donc du codage. Utiliser l'enregistreur de macros d'Excel, c'est pas développer. AutoIt dispose de ce genre d'outil, mais je ne le recommande pas où juste pour voir les fonctions utilisées suite à tes actions pour t'inspirer et coder ton propre script. AutoIt a aussi un outil d'inspection des objets Windows (ID, dimensions, couleurs...) et un outil de compilation de ton script pour en faire un exe.
Marsh Posté le 18-12-2015 à 12:04:58
Merci Rufo,
Je n'ai pas trouvé l'outil AutoIt qui permettrait d'enregistrer des macro, et oui c'est surtout utile pour étudier le code généré.
Je n'ai pas trouvé non plus l'outil d'inspection des objets Windows...
J'ai testé avec Scite et la sortie "debug", et ça déjà je trouve que c'est un avantage par rapport au VBS/HTA.
J'ai testé aussi les interfaces (bouton, rario, listes...) qu'on peut générer avec AutoIt et c'est plus zoli qu'en VBS/HTA natif...
Ensuite la fonction Run() me parait inintéressante et peut-être plus homogène que la version VBS/HTA.
Marsh Posté le 18-12-2015 à 13:09:17
https://www.autoitscript.com/site/autoit/downloads/ tu télécharges la version .zip :
Aut2exe pour compiler un script en exe
Au3Info pour avoir des infos sur un objet.
Par contre, y'a plus l'enregistreur de macro. C'était dans le v2. Mais c'est pas très grave, l'aide (fichier .chm) contient pleins d'exemples.
Marsh Posté le 18-12-2015 à 13:14:23
Liste de tous les outils autour d'AutoIt :
https://openclassrooms.com/courses/ [...] 4autoit-v3
L'enregistreur de macro ScriptWriter : http://sourceforge.net/projects/autoit-recorder/
Marsh Posté le 18-12-2015 à 16:38:57
unisev a écrit : |
Ca confirme ma supposition. Maintenant si tu as trouvé un autre outil plus adapté inutile de creuser...
Désolé pour le HS: C'est quel navigateur ça, Chrome?
Marsh Posté le 19-12-2015 à 02:21:19
Le navigateur c'est IE pour le coup.
J'ai redéveloppé tout mon script sous AutoIt3, et c'est globalement plus simple moins "bidouille" que le VBS/HTA.
En revanche je n'arrive toujours pas à programmer un clic sur ce bouton... même avec AutoIt3...
Marsh Posté le 19-12-2015 à 16:53:17
Bon, j'avance à petits pas, j'ai trouvé ça dans l'onglet "Network" de Chrome :
[{"nat":{"dmz":{"ipaddress":"192.168.1.10","state":0,"enable":0}}}]
[{"nat":{"dmz":{"ipaddress":"192.168.1.10","state":0,"enable":1}}}]
Je me suis laissé dire que c'était "peut-être un peu" du Java ?
Ne puis-je pas utiliser ce genre de "code" dans l'URL pour simuler l'appui sur le bouton ?
Marsh Posté le 19-12-2015 à 16:58:41
Tu confonds peut-être Java et Javascript? Les deux n'ont rien à voir... Tes deux lignes c'est des données dans tel ou tel format (JSON?), à mon avis ça ne te servira pas du tout. Je regarderai plutôt le fichier bbox-merge.js ligne 25. Si tu veux tu peux faire une copie du site (--> sauvegarder sous) et la mettre en ligne quelque part (attention qu'il n'y a pas de données sensibles!), j'y jetterai un coup-d'oeil (mais je ne suis pas un pro!).
edit: Par contre dans un navigateur le site fonctionne? Juste pour être sûr...
edit2: Après refléxion, tes deux lignes là pourraient être des données envoyés par le script (POST) lors de l'appui sur le bouton. Mais je dirai que dans l'état sans autres infos c'est pas particulièrement utile.
Marsh Posté le 20-12-2015 à 02:05:37
Voici la page en question, effectivement elle vient avec des scripts JavaScript (dont le bbox-merge.JS) :
http://176.158.133.174/Bbox _ UPnP & NAT_PAT.zip
Oui le site fonctionne bien dans un navigateur, c'est ce qui me rend confiant dans la faisabilité de la chose
Je ne connais pas le JavaScript...
Marsh Posté le 20-12-2015 à 13:38:57
Le bbox-merge.js c'est >300ko de code complètement ilisible, aucune chance d'en sortir quelque chose. J'ai téléchargé la page mais elle ne semble pas fonctionner en local, je me prends une erreur NS_ERROR_FILE_UNRECOGNIZED_PATH visible en console sous Firefox. A mon avis l'onglet network de Chrome ou Firefox est la solution pour savoir ce qui se passe exactement, ensuite faudra voir comment reproduire ça. Sinon peut-être avec Wireshark ou un outil genre Fiddler? Je ne peux pas t'aider je crains, comme je disais je n'arrive pas à faire fonctionner la page...
Marsh Posté le 20-12-2015 à 15:55:57
Bonjour !
Avec une version d'IE inférieure à 10, il faut parfois donner le focus au bouton avant de cliquer …
Marsh Posté le 20-12-2015 à 17:39:06
Oui, la page ne fonctionne pas en local, les fonctions de cette page sont en quelque sorte liées au "CORE" du routeur.
Oui le script "bbox-merge.js" en impressionnant, une fois qu'on a bien remis un retour chariot derrière chaque caractère ";" on voit bien que c'est un "gros" truc avec des noms de données absolument pas clairs.
En revanche, ça a l'air de faire partie du jQuery, ce qui pourrait être une information intéressante si je connaissais cette technologie...
Marc L > j'utilise IE11.
La j'avoue que je commence à tourner en rond.
Marsh Posté le 20-12-2015 à 19:01:36
Si tu es sous Seven, que ce soit avec ta version d'IE comme avec AutoIt, tente en donnant le focus avant le click, sait-on jamais …
Marsh Posté le 20-12-2015 à 19:05:38
Je pense avoir trouvé quelque chose, lié au JSON :
En fouillant dans l'onglet "Network" je vois 2 événements PUT lorsque je clique "humainement" sur le bouton qui permet d'activer ou non la DMZ :
Un premier nommé "login" et un second nommé "dmz" :
IE me donne les info suivantes sur "login" :
et voici les information de l’événement "DMZ" :
Ce qui est intéressant c'est que lorsque tape l'URL de demande de l'événement DMZ manuellement dans mon IE he bien ça télécharge un fichier "dmz.JSON" qui contient :
[{"nat":{"dmz":{"ipaddress":"192.168.1.10","state":1,"enable":1}}}]
Je pense donc que le PUT-dmz sert à consulter l'état du parametrage du routeur pour remonter les bonne données dans l'IHM.
Et j'imagine que le PUT-login sert lui à changer le paramètre en question...
Mais comment "simuler" le bon PUT ?
EDIT : Merci Marc je vais retenter cette voie...
Marsh Posté le 20-12-2015 à 23:47:27
Pourquoi tu n'essayes tout simplement pas de reproduire des actions que tu ferais, toi, dans l'IHM (site web dans ton navigateur), donc des saisies de valeurs dans des champs textes, des clics sur des boutons... avec AutoIt Ca ne serait pas plus simple que de vouloir reproduire des trames de données échangées entre le client web et la partie serveur ?
Marsh Posté le 21-12-2015 à 20:50:42
Tout d'abord merci à tous et à toi en particulier Rufo pour m'avoir fait découvrir AutoIt.
Je suis effectivement reparti dans ce sens et j'ai résolu pas mal de problèmes en appliquant les 2 conseils suivants pour Vista de la page IEnavigate :
Citation : 3) add the target website to the Trusted Sites security zone in IE, |
J'arrive du coup à me connecter, à naviguer, et même à cliquer sur le bon bouton...
Le problème qu'il reste :
Autrement dit, si je rafraîchi la page je vois bien que le paramètre n'a pas réellement changé.
Mon code :
Code :
|
La page concernée et le bout d'HTML associé :
Marsh Posté le 21-12-2015 à 21:10:56
Perso, je serais pas passé par l'objet IE mais plutôt par le vrai"IE" (le navigateur complet) en faisant un Run("iexplorer.exe url.html" ) puis en simulant les clics direct dans le vrai navigateur pour pas risquer d'avoir des pbs de mauvaise exécution de javascript
Marsh Posté le 22-12-2015 à 09:48:16
Merci Rufo,
Mais je crois que je vais m'arrêter là, ça m'ouvre la bonne fenêtre et je ne plus qu'à cliquer, après tout je préfère garder une action humaine sur ce paramétrage "sensible".
C'est déjà pas mal, mon script (qui fait aussi pleins d'autres choses) m'amène sur la bonne page dans le bon cas de figure et je n'ai plus qu'à cliquer... Autant à l'ouverture qu'à la fermeture du programme qui a besoin de ce paramétrage...
Merci à tous, même si je n'arrive pas à cliquer avec le script, je considère le sujet comme résolu
Marsh Posté le 22-12-2015 à 11:36:40
Je sais pas ce que tu veux faire mais perso j'utiliserai directement l'api dispo plutôt que s'amuser avec des mimics d'interface non ?
Marsh Posté le 22-12-2015 à 15:09:47
je veux activer la DMZ de ma bbox.
De quelle API parles-tu ?
Marsh Posté le 22-12-2015 à 23:13:59
unisev a écrit : Merci Rufo, |
Configurer une bbox, c'est sensible comme action ? S'il ne reste plus qu'à faire un clic, AutoIt est parfaitement capable de le faire... Mais bon, c'est toi qui vois.
Marsh Posté le 22-12-2015 à 23:44:33
bah l'api que tu montres /api/v1/nat/dmz en envoyant ton PUT et le cookie que tu récupères en te loggant (si l'auth est passée de cette façon, vu que je vois pas d'header http avec un token)
Marsh Posté le 23-12-2015 à 00:46:25
@rufo : c'est sensible pour la sécurité du réseau le paramétrage d'une DMZ, je préfère vérifier en personne qu'il est bien désactivé par exemple
@Je@nb : Ça m’intéresse ce que tu dis... donc je récapitule :
Lorsque je tape cette l'URL http://192.168.1.254/api/v1/nat/dmz dans mon navigateur, je reçois un fichier dmz.json qui me fourni le paramétrage en cours de ma DMZ
Je viens de trouver la data que transmet le PUT :
Donc comment simuler ça ? je peux le faire par l'URL ?
Marsh Posté le 23-12-2015 à 01:13:40
faudrait voir l'intégralité des échanges avec fiddler ou quoi et mimiquer le truc. en PowerShell ta invoke-webrequest qui fait plein de truc, sinon tu peux bidouiller un truc avec curl j'imagine
Marsh Posté le 16-12-2015 à 13:04:22
Bonjour,
J'aimerai automatiser l'appui sur le bouton vert qu'on voit à droite sur l'image ci-dessous à l'aide d'uns script VBS (HTA) :
(Quand je fais "inspecter l'élément, c'est la ligne <label></label> qui est en surbrillance...)
Malheureusement je n'ai AUCUNE idée de par ou prendre le truc... pouvez-vous SVP m'orienter ?
Voici mon draft
Message édité par unisev le 22-12-2015 à 09:49:36