[..] formulaire login mot de passe IE

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
guillaume
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mar. 28 août 2007 12:13
Status : Hors ligne

[..] formulaire login mot de passe IE

#1

Message par guillaume »

Bonjour,

j'essai de creer un script qui me permettrait de me connecter sur une page web avec un login mot de passe et appuyer sur un bouton
Actuellement ça tourne avec des send ("{tab}") et des envois de caractère, mais le résultat n'est pas fiable..

j'ai vu qu'il existait des fonctions plus poussées pour fonctionner avec IE,

j'ai trouvé la fonction _IEFormSubmit qui m'a l'air d'être intéressante pour solutionner mon problème

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IECreate ("http://www.google.com")
$oForm = _IEFormGetObjByName ($oIE, "f")
$oQuery = _IEFormElementGetObjByName ($oForm, "q")
_IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
_IEFormSubmit ($oForm)
mais je ne comprends pas du tout le fonctionnement des lettres "f" et "q"
ce sont des arguments qui ne fonctionnent que sur google ?

comment savoir quoi utiliser sur un autre formulaire pour un login mot de passe ?

J'avoue que je suis un peu perdu, et par manque de temps je me permets de soliciter votre aide si vous savez faire.

Merci à vous
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#2

Message par sylvanie »

Bonjour,
en effet f et q sont relatifs à Google.
je vous invite à éditer le code source de www.goofle.com.
On en ligne 90 :

Code : Tout sélectionner

            <form action="/search" name=f>
Donc, f est le nom du formulaire ciblé par _IEFormGetObjByName.
A partir de l'objet "formulaire" on cherche l'identité du contrôle où est sasie le text, cf ligne 98 de la source de la page web :

Code : Tout sélectionner

                    <input autocomplete="off" maxlength=2048 [b]name=q [/b]size=55 class=lst title="Recherche Google" value="">
 
_IEFormElementGetObjByName va donc retourner un objet pointant sur cette input.

puis _IEFormElementSetValue ($oQuery, "AutoIt IE.au3") va donc envoyer le text sur "q" (lui même lié à "f")

et enfin _IEFormSubmit ($oForm) va déclenche l'action décrite dans la description de f (donc /seach)


Tout ça pour dire, que tout cas est particulier, mais à chaque fois, ilfaut
1) localiser le nom du formulaire dans la source grâce à "<form action= ..." pour _IEFormGetObjByName
2) localiser les input login et mot de passe qui seront des éléments de type "<input ..." pour IEFormElementGetObjByName (il en faudra 1 par edit, forcément...)
3) les remplir grâce à IEFormElementSetValue (2 appels aussi)
4) envoyer le IEFormSubmit relatif à l'objet retourné par IEFormGetObjByName

Il est peut être possible que le login et le mdp soit dans 2 formulaires distincts (plus rare), dans ce cas on se ramène au cas google répliqué 2 fois
Bonne continuation
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
guillaume
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mar. 28 août 2007 12:13
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#3

Message par guillaume »

Bonjour,

Merci pour cette réponse très précise !
J'ai compris le principe, c'était très clair.

Il me reste un soucis, c'est que je n'arrive pas à envoyer le formulaire.

Voici le code source avec les éléments nécessaire :

Code : Tout sélectionner

                        <[color=#FF0000]form[/color] method="post" action="./index.php?action=js" onSubmit="return LoginGanesha()" [color=#FF0000]name="formulaire"[/color] id="formulaire">
                          <tr align="center">
                            <td colspan="2" class="tabcell3"><strong>Acc&egrave;s formation </strong></td>
                          </tr>
                          <tr>
                            <td width="40%" class="tabcell texte">&nbsp;&nbsp;Identifiant : </td>
                            <td width="60%" class="tabcell"><input value="" type="text" [color=#FF0000]name="txtuser"[/color] id="txtuser" size="20" maxlength="20" class="text">
                            </td>
                          </tr>
                          <tr bgcolor="#F9ECD5">
                            <td width="40%" class="tabcell texte">&nbsp;&nbsp;Mot de passe : </td>
                            <td width="60%" class="tabcell">
                                <input type="hidden" name="txtpassword" >
                                <input value="" type="password" [color=#FF0000]name="txtpassword2"[/color] id="txtpassword2" size="20" maxlength="30" class="text">
                            </td>
                          </tr>
                          <tr align="center" bgcolor="#F9ECD5">
                            <td class="tabcell">&nbsp;</td>
                            <td align="left" class="tabcell"><input type="submit" class="bouton" value="valider" >
Voici mon script :

Code : Tout sélectionner

[code]$oIE = _IECreate ("10.4.0.14")
$oForm = _IEFormGetObjByName ($oIE, "formulaire")
$oQuery = _IEFormElementGetObjByName ($oForm, "txtuser")
_IEFormElementSetValue ($oQuery, "utilisateur")

$oQuery2 = _IEFormElementGetObjByName ($oForm, "txtpassword2")
_IEFormElementSetValue ($oQuery2, "motdepasse")

_IEFormSubmit ($oForm)
[/code]

Je ne parviens pas à faire fonctionner le submit.

Avez vous une idée ?

merci beaucoup
guillaume
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mar. 28 août 2007 12:13
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#4

Message par guillaume »

A priori ça ne fonctionne pas car c'est du javascript,
dans l'aide j'ai trouvé la fonction
_IEAction ($oSubmit, "click")

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IE_Example ("form")
$oSubmit = _IEGetObjByName ($oIE, "[color=#FF0000]submitExample[/color]")
_IEAction ($oSubmit, "click")
_IELoadWait ($oIE)
mais je n'ai pas encore trouvé ce que je devais inscrire à la place de submitExample
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#5

Message par orax »

Dans l'exemple de l'aide, _IEAction ($oSubmit, "click") clique sur le bouton (input) submitExample :

Code : Tout sélectionner

<input name='submitExample' type='submit' value='Submit'>
Donc dans votre cas, peut-être que pour envoyer le formulaire il faut également cliquer sur un bouton ? Il y a des chances pour que ce soit ce bouton qu'il faudra mettre à la place de "submitExample".
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
guillaume
Niveau 4
Niveau 4
Messages : 68
Enregistré le : mar. 28 août 2007 12:13
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#6

Message par guillaume »

oui c'est un bouton, et il n'y a pas de "name"

Code : Tout sélectionner

<input type="submit" class="bouton" value="valider" >
ou alors c'est ailleurs dans le code..
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] formulaire login mot de passe IE

#7

Message par orax »

Ben c'est la catastrophe alors...
Vous pouvez toujours cliquer sur un bouton en connaissant son index ou éventuellement sa valeur ("value" je crois).
Voilà un exemple qui clique sur "Recherche Google" en utilisant son index :

Code : Tout sélectionner

#include <array.au3>
#include <IE.au3>
$oIE = _IECreate ("http://www.google.fr")
$oInput=$oIE.document.all.tags("input")
$index=0
For $oInput_element In $oInput
    MsgBox(0,$index,$oInput_element.value) ; Recherche Google = index n°3
    $index+=1
Next
$oInput_Recherche_Google=$oIE.document.all.tags("input").item(3) ; on clique sur le input qui a l'index n°3 ("Recherche Google")
_IEAction($oInput_Recherche_Google,"click")
 
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre