Page 1 sur 1

[R] Remplissage formulaire (deux zones) avec _IE  

Posté : lun. 16 juil. 2018 14:04
par franco
Bonjour.

J'essaye de remplir automatique deux zones d'éditions avec IE, via ce lien : https://www.leboncoin.fr/compte/part/mes-annonces/


Les deux zones sont bien remplies...
Fin bref, je le croyais...

Car si je décide de me connecter (manuellement), ces deux zones s'effacent automatiquement, et un message me dit que je n'ai rien indiqué dans les deux zones.
Comme si je n'avais vraiment rien indiqué.


Voici le code :
#include <IE.au3>
$maillbc = "mail@live.fr"
$mdplbc = "mot_de_passe"

ProcessClose("iexplore.exe")
$ClearID = "32"
Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID)

$oIE = _IECreate("https://compteperso.leboncoin.fr/account/index.html", 0, 1, 1)

$username = _IEGetObjByName($oIE, "email")
$mdp = _IEGetObjByName($oIE, "password")
Local $hWnd = _IEPropertyGet($oIE, "hwnd")


_IEFormElementSetValue($username, $maillbc)
_IEFormElementSetValue($mdp, $mdplbc)

_IELoadWait($oIE)
Donc, ma question : pourquoi les zones s'effacent ?
Aurais-je oublié une étape ?

Je ne cherche qu'une seule chose : que le remplissage se fasse bien, qu'il ne s'efface pas.


Merci de m'aiguiller...

++

Re: [..] Remplissage formulaire (deux zones) avec _IE

Posté : lun. 16 juil. 2018 18:03
par walkson
Bonjour,
Et comme ça ?
#include <IE.au3>
$maillbc = "mail@live.fr"
$mdplbc = "mot_de_passe"


$oIE = _IECreate("https://compteperso.leboncoin.fr/account/index.html")

$username = _IEGetObjByName($oIE, "email")
$mdp = _IEGetObjByName($oIE, "password")

_IEFormElementSetValue($username, $maillbc)
_IEFormElementSetValue($mdp, $mdplbc)
Local $oInputs = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $oInput In $oInputs
    $sTxt &= $oInput.type &"---"& $oInput.innertext  & @CRLF
   If $oInput.innertext = "Se connecter" Then _IEAction($oInput, "click")
Next
MsgBox(0, "Form  Type", " Types :" & @CRLF & $sTxt)

Re: [..] Remplissage formulaire (deux zones) avec _IE

Posté : lun. 16 juil. 2018 18:48
par franco
Salut.

Et merci pour ton intervention :)

Le résultat est le même avec ton script : à la fin, c'est marqué qu'on n'a ni indiqué de mail, ni de mot de passe...

j'ai l'impression qu'en surface, rien a été "écrit".

https://i.imgur.com/fDslzlm.png
https://transfer.sh/AQ0nG/2018-07-16_18-46-57.mp4


Peut-être qu'il faut d'abord rendre actif les zones avant l'édition ?
je sais pas :'(


++

Re: [..] Remplissage formulaire (deux zones) avec _IE

Posté : lun. 16 juil. 2018 18:56
par walkson
Si je désactive If $oInput.innertext = "Se connecter" Then _IEAction($oInput, "click") j'obtiens bien le formulaire rempli avec MDP et login mais comme je n'ai pas de compte, je ne peux pas vérifier plus loin
(IE 11 et win 7)

Re: [..] Remplissage formulaire (deux zones) avec _IE

Posté : lun. 16 juil. 2018 19:28
par franco
Salut.

Même sans compte, si on valide avec des identifiants erronées, on doit avoir un message stipulant ceci : "Votre identifiant ou mot de passe est incorrect."

sauf qu'avec ton script, ou le mien, on n'a pas ça...

Bizarre...

Je me demande s'il faut pas utiliser les include de FF.....

On va tester ça.


++

Re: [..] Remplissage formulaire (deux zones) avec _IE

Posté : mar. 17 juil. 2018 15:45
par franco
Salut.

Souci résolu.


la commande "_IEFormElementSetValue" ne fonctionne pas, dans cet exemple...

En utilisant _IEPropertySet et le paramètre innertext, ça fonctionne...


Voici le code
#include <IE.au3>

ProcessClose("iexplore.exe")
$ClearID = "32"
Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID)

$oIE=_IECreate("https://www.leboncoin.fr/compte/part/mes-annonces/")
$mail_lbc = _IEGetObjByName($oIE,"email")
$mdp_lbc= _IEGetObjByName($oIE,"password")
_IEPropertySet($mail_lbc ,"innertext","mail@live.fr")
_IEPropertySet($mdp_lbc,"innertext","motdepasse")

Local $oObjs = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $oObj In $oObjs
    $sTxt &= $oObj.type &"---"& $oObj.innertext  & @CRLF
        If $oObj.innertext = "Se connecter" Then _IEAction($oObj, "click")
Next


;~ Local $oSubmit = _IEGetObjByName($oIE, "submit")
;~ _IEAction($oSubmit, "click")
;~ _IELoadWait($oIE)


Exit

Maintenant, il faut que je trouve un moyen de supprimer les mots de passe.

car Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID) fonctionne 1 fois sur 4. ^^


Dès que je trouve ce "moyen", je pourrais mettre ce topic en résolu.


PS : j'ai surement une piste, avec la navigation privée.



EDIT :

Résolu... ;)

En fait, il n'y avait pas d'erreur...

Mais une petite modification s'imposait.
Ici :
$ClearID = "32"
Run("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID)
J'ai modifié 32 par 255...
Et j'ai opté pour un RunWait, car sinon, IE s'ouvrait avant la suppression des mots de passes et autres (car 255 : supprime tout ^^)

-> https://www.autoitscript.com/forum/topi ... ent=829193

Voilà le code
#include <IE.au3>

ProcessClose("iexplore.exe")
$ClearID = "255"
RunWait("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess " & $ClearID)

$oIE=_IECreate("https://www.leboncoin.fr/compte/part/mes-annonces/")
$mail_lbc = _IEGetObjByName($oIE,"email")
$mdp_lbc= _IEGetObjByName($oIE,"password")
_IEPropertySet($mail_lbc ,"innertext","mail@live.fr")
_IEPropertySet($mdp_lbc,"innertext","motdepasse")

Local $btns = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $btn In $btns
    $sTxt &= $btn.type &"---"& $btn.innertext  & @CRLF
        If $btn.innertext = "Se connecter" Then _IEAction($btn, "click")
Next

Exit
Je passe donc en résolu.

Merci à toi ;)

++