Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1060 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Resolu]Un script qui active un "bouton moderne"

 

 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu]Un script qui active un "bouton moderne"

n°2271733
unisev
Posté le 16-12-2015 à 13:04:22  profilanswer
 

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...)
 
https://lh3.googleusercontent.com/-cwf_9HBYsRA/VnFR1bWgeeI/AAAAAAAADRM/m76dc_dVdSY/s800-Ic42/Activate%252520DMZ.jpg
 
Malheureusement je n'ai AUCUNE idée de par ou prendre le truc... pouvez-vous SVP m'orienter ?
 
Voici mon draft
 

Code :
  1. 'Login bbox
  2. Dim objWshShell,IE
  3. Set objWshShell = Wscript.CreateObject("Wscript.Shell" )
  4. Set IE = CreateObject("InternetExplorer.Application" )
  5. With IE
  6.   .Visible = True
  7.   .Navigate "http://192.168.1.254"
  8. 'Wait for Browser
  9.   Do While .Busy
  10.     WScript.Sleep 100
  11.   Loop
  12. .Document.getElementsByName("password" ).Item(0).Value = "MyPassword"
  13. .Document.Forms(0).submit 'Cette ligne ne fonctionne pas pour l'instant
  14. Do While .Busy
  15.     WScript.Sleep 100
  16.   Loop
  17.   .Navigate "http://192.168.1.254/natpat.html"
  18.  .Document.getElementsByID("rule-activation-1" ).Item(0).Checked = True ' Ne fonctionne pas
  19. Do While .Busy
  20.     WScript.Sleep 100
  21.   Loop
  22. End With


Message édité par unisev le 22-12-2015 à 09:49:36
mood
Publicité
Posté le 16-12-2015 à 13:04:22  profilanswer
 

n°2271807
rufo
Pas me confondre avec Lycos!
Posté le 17-12-2015 à 10:09:00  profilanswer
 

Je me demande si ça serait pas plus simple à faire avec un outil comme AutoIt ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2271826
rat de com​bat
attention rongeur méchant!
Posté le 17-12-2015 à 14:47:33  profilanswer
 

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?

Message cité 1 fois
Message édité par rat de combat le 17-12-2015 à 14:52:46
n°2271846
unisev
Posté le 17-12-2015 à 23:09:38  profilanswer
 

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.
 
edit: Dans ta fenêtre Explorateur DOM il y a un tab Événmts (événements, à droite), ça dit quoi quand tu cliques dessus?


 
Ca dit ça :
https://lh3.googleusercontent.com/--N4nAILttik/VnMyfnLtJGI/AAAAAAAADR4/Y7-qpxHy6tw/s800-Ic42/Events.jpg

n°2271847
rufo
Pas me confondre avec Lycos!
Posté le 17-12-2015 à 23:14:08  profilanswer
 

unisev a écrit :


 
Je connais pas encore, quel serait l'avantage de cet outil ?
 


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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2271848
unisev
Posté le 17-12-2015 à 23:28:49  profilanswer
 

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...

n°2271858
rufo
Pas me confondre avec Lycos!
Posté le 18-12-2015 à 09:38:57  profilanswer
 

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2271864
unisev
Posté le 18-12-2015 à 12:04:58  profilanswer
 

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.

n°2271873
rufo
Pas me confondre avec Lycos!
Posté le 18-12-2015 à 13:09:17  profilanswer
 

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2271875
rufo
Pas me confondre avec Lycos!
Posté le 18-12-2015 à 13:14:23  profilanswer
 

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/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 18-12-2015 à 13:14:23  profilanswer
 

n°2271907
rat de com​bat
attention rongeur méchant!
Posté le 18-12-2015 à 16:38:57  profilanswer
 

unisev a écrit :


Ca dit ça :
https://lh3.googleusercontent.com/--N4nAILttik/VnMyfnLtJGI/AAAAAAAADR4/Y7-qpxHy6tw/s800-Ic42/Events.jpg


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?

n°2271955
unisev
Posté le 19-12-2015 à 02:21:19  profilanswer
 

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...

n°2271965
unisev
Posté le 19-12-2015 à 16:53:17  profilanswer
 

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 ?

n°2271966
rat de com​bat
attention rongeur méchant!
Posté le 19-12-2015 à 16:58:41  profilanswer
 

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.


Message édité par rat de combat le 19-12-2015 à 17:01:02
n°2271989
unisev
Posté le 20-12-2015 à 02:05:37  profilanswer
 

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...


Message édité par unisev le 20-12-2015 à 02:06:53
n°2272002
rat de com​bat
attention rongeur méchant!
Posté le 20-12-2015 à 13:38:57  profilanswer
 

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...

n°2272006
Marc L
Posté le 20-12-2015 à 15:55:57  profilanswer
 

 
           Bonjour !
 
           Avec une version d'IE inférieure à 10, il faut parfois donner le focus au bouton avant de cliquer …
 

n°2272013
unisev
Posté le 20-12-2015 à 17:39:06  profilanswer
 

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.

n°2272015
Marc L
Posté le 20-12-2015 à 19:01:36  profilanswer
 

 
 
           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 …


Message édité par Marc L le 20-12-2015 à 19:02:08
n°2272016
unisev
Posté le 20-12-2015 à 19:05:38  profilanswer
 

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" :
http://176.158.133.174/login.jpg
et voici les information de l’événement "DMZ" :
http://176.158.133.174/DMZ.jpg
 
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...


Message édité par unisev le 20-12-2015 à 19:06:25
n°2272026
rufo
Pas me confondre avec Lycos!
Posté le 20-12-2015 à 23:47:27  profilanswer
 

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 ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2272106
unisev
Posté le 21-12-2015 à 20:50:42  profilanswer
 

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,
    4) turn off "Protected Mode" in IE,


 
J'arrive du coup à me connecter, à naviguer, et même à cliquer sur le bon bouton...
 
Le problème qu'il reste :

  • Le click sur le bouton change bien son apparence mais ne lance PAS le changement de paramètre sur le routeur


Autrement dit, si je rafraîchi la page je vois bien que le paramètre n'a pas réellement changé.
 
Mon code :

Code :
  1. #include <IE.au3>
  2. Local $oIE = _IECreate("192.168.1.254",1)
  3. Sleep(1000)
  4. Send("MyPassword{Enter}" )
  5. Sleep(2000)
  6. _IENavigate($oIE, "http://192.168.1.254/natpat.html",1)
  7. Sleep(2000)
  8. $oLink = _IEGetObjById($oIE, "rule-activation-1" )
  9. ; $href = $oLink.href
  10. _IEAction($oLink, "click" )


 
La page concernée et le bout d'HTML associé :
http://176.158.133.174/codeBTNdmz.jpg


Message édité par unisev le 21-12-2015 à 20:55:03
n°2272108
rufo
Pas me confondre avec Lycos!
Posté le 21-12-2015 à 21:10:56  profilanswer
 

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 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2272123
unisev
Posté le 22-12-2015 à 09:48:16  profilanswer
 

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

Message cité 1 fois
Message édité par unisev le 22-12-2015 à 09:51:33
n°2272142
Je@nb
Kindly give dime
Posté le 22-12-2015 à 11:36:40  profilanswer
 

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 ?

n°2272158
unisev
Posté le 22-12-2015 à 15:09:47  profilanswer
 

je veux activer la DMZ de ma bbox.
 
De quelle API parles-tu ?

n°2272195
rufo
Pas me confondre avec Lycos!
Posté le 22-12-2015 à 23:13:59  profilanswer
 

unisev a écrit :

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


Configurer une bbox, c'est sensible comme action ?  :heink: S'il ne reste plus qu'à faire un clic, AutoIt est parfaitement capable de le faire... Mais bon, c'est toi qui vois.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2272197
Je@nb
Kindly give dime
Posté le 22-12-2015 à 23:44:33  profilanswer
 

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)

n°2272198
unisev
Posté le 23-12-2015 à 00:46:25  profilanswer
 

@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 :
http://176.158.133.174/DMZnetEvent.png
 
Donc comment simuler ça ? je peux le faire par l'URL ?

n°2272199
Je@nb
Kindly give dime
Posté le 23-12-2015 à 01:13:40  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Resolu]Un script qui active un "bouton moderne"

 

Sujets relatifs
[Resolu] Une script qui valide une formulaire WebNouvelle formule dans un script
Appel batch à partir script powershellPowershell - Problème script création d'utilisateur dans l'AD
Arrêt d'un PC avec un script batchScript BATH
Problème bouton menu mobile[JAVA]probleme de bouton personnaliser.
aide pour finaliser un scriptDemande aide pour zone de texte et bouton recherche
Plus de sujets relatifs à : [Resolu]Un script qui active un "bouton moderne"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR