Page 1 sur 1

[R] Recherche d'objets dans une page web

Posté : mer. 16 juil. 2008 09:53
par mimi31110
Bonjour,
je viens de découvrir AutoIt et je suis en train de le tester, pour voir s'il correspond à ce que je cherche ...

je dois effectuer des tests sur une application web, remplir des champs de textes mais aussi cliquer sur des boutons. Et mon but serait d'automatiser ces tests par scripts...

remplir les champs, c'est bon, j'y arrive, mais est-il possible de chercher l'emplacement d'un bouton par son nom pour y cliquer dessus ???

merci
...Milie...

Re: recherche d'objets dans une page web

Posté : mer. 16 juil. 2008 10:34
par timmalos
La premiere chose à savoir, c'est le clic sur le bouton renvoi t'il directement sur un lien ou renvoi t'il a un code javascript :?:

:!: Le plus simple est que tu nous donne ton lien et ce que tu veux pour qu'on te fasse un exemple. :!:

:arrow: Dans le premier cas:
Nb: ceci est un exemple il existe des solutions multiples

Code : Tout sélectionner

$oIE = _IECreate ("https://.../cgi-bin/..._login.pl?language=fr",0,0)

$oForm = _IEFormGetCollection ($oIE,0) ; Ici on cherche la premiere form de la page.Souvent bon


;-------------------------------------------------------------------------
;$oAccount = _IEFormElementGetObjByName ($oForm, "Laccount")
;$oPassword = _IEFormElementGetObjByName ($oForm, "Lpassword")
;_IEFormElementSetValue ($oAccount, "pseudo")
;_IEFormElementSetValue ($oPassword, "*******")

;Les lignes d'en dessus correspondent au remplissage, ce que tu arrive à faire
;--------------------------------------------------------------------------
Et après on envoi le tout, terminé.
_IEFormSubmit($oForm)
 
Pour des explications detaillées, demande.

:arrow: Dans le deuxieme cas, on ne peut pas utiliser _IEFormSubmit
IL faut donc ecrire:

Code : Tout sélectionner

$oForm = _IEFormGetCollection ($oIE,0) ; Ici on cherche la premiere form de la page.Souvent bon
$oValider = _IEFormElementGetObjByName ($oForm, "Valider")
_IEAction($oValider,"click")

Re: [..] recherche d'objets dans une page web

Posté : mer. 16 juil. 2008 15:38
par mimi31110
Merci, la première solution fonctionne.
j'ouvre ma page, je rempli mes champ puis je valide avec

Code : Tout sélectionner

$oForm = _IEFormGetCollection ($oIE,0)
_IEFormSubmit($oForm)
mais ceci que fait la première ligne ? elle récupère un objet Form ?

dans mon cas, c'est un bouton "OK" qui déclanche un javascript affichant un menu vertical si les champs sont correctement remplis. et je dois ensuite "cliquer" si des liens hypertextes de ce menu... Et ces liens, ils sont de repérables ?

je dois pouvoir y accéder par "TAB" mais c'est possible pas clic ???

Re: [..] recherche d'objets dans une page web

Posté : mer. 16 juil. 2008 16:02
par jbnh
c'est possible pas clic ???
par clic je suppose, si c'est le cas tout simplement Mouseclick

Re: [..] recherche d'objets dans une page web

Posté : mer. 16 juil. 2008 17:19
par timmalos
jbnh a écrit :
c'est possible pas clic ???
par clic je suppose, si c'est le cas tout simplement Mouseclick
il doit plutot parler des clics effectués avec _IEAction pour que le script soit fonctionnel sur n'importe quelle marchine.

$oForm = _IEFormGetCollection ($oIE,0) recupere le premier objet form de la page.
En fait, a chaque bouton Envoyer est associé plusieurs Input, generalement.

$oForm = _IEFormGetCollection ($oIE,0) equivaut à _IEFormGetObjByName si il n'y a qu'un form dans la page.
Allez dans l'aide et regardez bien et testez les exemples fournis pour comprendre, c'est assez compliqué.

Après, quant on a le oForm, on utilise les

$oAccount = _IEFormElementGetObjByName ($oForm, "Laccount") pour trouver ici le premier Input qui a pour name "Laccount". On pourrait tout aussi bien pu faire
$oForm = _IEFormElementGetCollection ($oForm,0)
et
$oForm = _IEFormElementGetCollection ($oForm,1) pour le 2eme input qui est generalement le Mot de Passe



Ensuite, pour votre page, le plus simple serait de m'envoyer le lien, par mp si vous ne souhaitez pas le rendre public.
Car votre menu doit je pense se trouver dans une frame, ou iframe, ce qui rend la chose encore plus compliquée.

Regardez ces fonctions:

_IEFrameGetCollection
_IELinkGetCollection puis _IELinkClickByIndex (marche seulement si votre lien ne renvoi pas vers du javascript) , dans ce cas il faut utiliser _IEAction


Bonne continuation

Re: [..] recherche d'objets dans une page web

Posté : jeu. 24 juil. 2008 11:00
par mimi31110
Merci, beaucoup beaucoup !!!

pour manipuler une page web, c'est pratique je connaitre le nom des objets...
dans mon cas, je cherche à automatiser des tests sur un site web durant sa conception, donc j'ai le code html, et donc le nom des objets...

je fais donc :

Code : Tout sélectionner

; -> on récupère la <Form> de nom « name_form »
$oForm = _IEFormGetObjByName ($oIE, "name_form") 
; -> on récupère l’objet de nom « obj » qui est dans la form « name_form », soit $oForm
$oElt=_IEFormElementGetObjByName ($oForm, "obj") 
; -> on modifie la valeur du champ récupéré
_IEFormElementSetValue ($oElt, "valeur voulu !")
 
et ça marche aussi bien pour des champs de saisi que des combobox ou des listbox !


Merci @ tous !

Re: [R] Recherche d'objets dans une page web

Posté : mar. 02 sept. 2008 19:01
par coincoin
Question qui va dans le meme sens que le topic:
J'ai fais choisir a travers une combobox un fois, et dans ma page web il existes une combobox avec les meme choix.
j'ai tenté:

Code : Tout sélectionner

$Combobox_home = _IEFormElementGetObjByName($Formulaire_home, "combobox1") 
   ; Se place dans la combobox de la page Web
_IEFormElementSetValue($Combobox_home,$choix1) 
   ; écrit le choix n°1 dans la comboxbox de la page web.
 
Une petite idée?

Re: [R] Recherche d'objets dans une page web

Posté : mar. 02 sept. 2008 20:18
par timmalos
La , comme ca, aucune. Il me faudrait idealement la page internet ainsi que votre script complet:)
Sinon je vais difficilement pouvoir trouver vu que je n'ai jamais été confronté a ce genre de combobox.

Re: [R] Recherche d'objets dans une page web

Posté : mar. 02 sept. 2008 20:35
par coincoin
Je me suis peut etre mal exprimé :)
En faite quand il y a un edit sur une page internet, il suffit de ce placé dedant et d'écrire ce que l'on désir.

Code : Tout sélectionner

$Edit_login_home = _IEFormElementGetObjByName($Formulaire_home, "login")

_IEFormElementSetValue($Edit_login_home,$pseudo) ; écrit le pseudo dans l'edit
 
Maintenant je voudrais faire la meme chose, avec une combobox. Il y a une combobox avec un certain nombre de choix. Si je désir le choix n°3 par exemple comment dois-je procéder.
merci

Re: [R] Recherche d'objets dans une page web

Posté : mer. 03 sept. 2008 13:24
par timmalos
Je n'ai pas fait d'essais, car flemme de chercher un site approprié, mais _IEFormElementCheckBoxSelect devrait marcher.

Re: [R] Recherche d'objets dans une page web

Posté : mer. 03 sept. 2008 13:41
par coincoin
Merci c'est la fonction que je ne trouvais pas, c'est parfait :)

Re: [R] Recherche d'objets dans une page web

Posté : lun. 07 sept. 2009 12:41
par avander
Pour tester des applications web il te faudrait peut-être un outil plus adapté comme Webtest de Canoo, non?