Page 1 sur 1

[R] Valider un formulaire via _IEFormSubmit

Posté : jeu. 12 mai 2016 15:02
par benzo
Bonjour,

Un grand classique , je cherche à valider un formulaire d'authentification automatiquement .
Les valeurs "login" et "password" s'inscrivent correctement dans les champs input.
Mais je n'arrive pas à faire le "submit "..

Code : Tout sélectionner

Local $oIE = _IECreate($url)
$oForm = _IEFormGetObjByName ($oIE, "ginbox")
$username = _IEGetObjByName ($oIE,"login")
$password = _IEGetObjByName ($oIE,"password")
_IEFormElementSetValue ($username,$name)
_IEFormElementSetValue ($password,$pwd)
sleep(300)
_IEFormSubmit ($oForm)
Code source html concerné :

Code : Tout sélectionner

<div id="ginbox">
          <form action="login.php" method="post">
            <fieldset>
              <legend>Authentification</legend>
              <label>Identifiant</label>
              <input name="login" type="text"/><br/>
              <label>Mot de passe</label>
              <input name="password" type="password"/><br/>
              <a href="password_reinit.php">J'ai oublié mon mot de passe</a>
              <input type="submit" class="minisub" value="Se connecter"/><br/>
            </fieldset>
          </form>
        </div>
Merci d'avance pour votre aide .

Re: [...] Valider un formulaire via _IEFormSubmit

Posté : jeu. 12 mai 2016 15:36
par orax
Est-ce qu'il y a quelque chose qui s'affiche dans la console ? Erreurs, avertissements ?

Re: [...] Valider un formulaire via _IEFormSubmit

Posté : jeu. 12 mai 2016 16:20
par benzo
--> IE.au3 T3.0-2 Warning from function _IEFormGetObjByName, $_IESTATUS_NoMatch
--> IE.au3 T3.0-2 Error from function _IEFormSubmit, $_IESTATUS_InvalidDataType


En fait, je ne sais pas trop si je récupère le bon nom du Form ? (divid =ginbox?)

$oForm = _IEFormGetObjByName ($oIE, "ginbox")

Re: [...] Valider un formulaire via _IEFormSubmit

Posté : jeu. 12 mai 2016 16:31
par jguinch
Effectivement, $oForm ne correspond pas au formulaire.
Utilise _IEFormGetCollection à la place

Re: [...] Valider un formulaire via _IEFormSubmit

Posté : jeu. 12 mai 2016 16:34
par mikell
Tu peux aussi l'essayer comme ça

Code : Tout sélectionner

$oInputs = _IETagNameGetCollection($oIE, "input")
For $oInput In $oInputs
    If $oInput.name == "login" Then $oInput.innertext = $username
    If $oInput.name == "password" Then $oInput.innertext = $password
    If $oInput.type == "submit" Then 
        _IEAction($oInput, "focus")
        _IEAction($oInput, "click")
        ExitLoop
    EndIf
Next

Re: [...] Valider un formulaire via _IEFormSubmit

Posté : ven. 13 mai 2016 14:58
par benzo
@jguinch
J'avais essayé avec _IEFormGetCollection mais ca ne m'avait rien renvoyé comme infos

@mikell , ton code fonctionne mikkel euh nikel :wink:
Juste pour savoir le _IEAction($oInput, "focus") est obligatoire?

Merci à tous les deux.