Page 1 sur 2

[R] Identification avec _IE

Posté : ven. 04 janv. 2008 22:51
par 123456789
bonjour je suis nouveau :D

Voilà, je cherche à faire un script pour me connecter à ma boite mail qui est chez laposte.net, mon soucis c'est que j'ai besoin de la frame pour _IE et elle n'est pas dans le code source, donc je me demande si il n'y a pas moyen de faire autrement pour détecter la case login et la case mail.

merci d'avance :P

Re: [..] Gestion de l'_IE

Posté : dim. 06 janv. 2008 21:37
par 123456789
up plz

Re: [..] Gestion de l'_IE

Posté : dim. 06 janv. 2008 22:08
par Voodoo
Je n'ai pas la doc sous les yeux mais un _IEFormGetObjByName() en utilsant le nom du champ login et du champ mot de passe a trouvé le code html de la page Laposte.net doit étre la solution !

Ps: le nom pour le login est "Identifiant" et le pour le mdp c'est "Mot de passe" mais je ne vois pas le code du formulaire dans la source...

Re: [..] Gestion de l'_IE

Posté : lun. 07 janv. 2008 22:55
par 123456789
oui j'ai longtemps regarder les sources sans trouver je pense que ses impossible de faire une automatisation avec _IE dans laposte.net nan?

Re: [..] Gestion de l'_IE

Posté : lun. 07 janv. 2008 23:14
par Voodoo
J'essaye et je te dis !

Re: [..] Gestion de l'_IE

Posté : mar. 08 janv. 2008 14:48
par Voodoo
Effectivement, le nom du formulaire etait bien caché derriere 2 page de javascript...

Testé et aprouvé :mrgreen:

Code : Tout sélectionner

#include <IE.au3>
$oie = _IECreate("http://www.laposte.net/")
 
$obj_form = _IEFormGetCollection ($oIE, 0)
$obj_login = _IEFormElementGetCollection ($obj_form , 0)
$obj_mdp = _IEFormElementGetCollection ($obj_form , 1)
 
_IEFormElementSetValue ($obj_login ,"login")
_IEFormElementSetValue ($obj_mdp ,"mdp")
 
_IEFormSubmit ($obj_form)
 

Re: [..] Gestion de l'_IE

Posté : mar. 08 janv. 2008 21:09
par 123456789
Ok merci mais se que je voulais savoir ses comment tu a trouver le nom du formulaire de login dans les codes sources?

Re: [..] Gestion de l'_IE

Posté : mer. 09 janv. 2008 13:40
par Voodoo
Bien sur, dans le code de la page wwww.laposte.net il y a ceci à la place du formulaire standard

Code : Tout sélectionner

 
<div class="blk_user" style="margin-left:11px;">
      <SCRIPT type="text/javascript">mail('https://compte.laposte.net');</SCRIPT>
      <div style="clear:both;"></div>
 
Du javascript, or seul le /js/css_header.js est inclu donc on regarde à http://www.laposte.net/js/css_header.js . Mais la toujours pas de formulaire ! Par contre, deux autres fichier javascript sont decalrés en include donc j'ai regardé les deux et dans celui si:
http://www.laposte.net/js/common_lp.js j ai trouvé mon code formulaire:

Code : Tout sélectionner

document.write('<form action="https://compte.laposte.net/login.do" name="userlogin" method="post" onsubmit="return checkForm()">');
Le nom du formulaire est bien userlogin :)

Normalement c'est plus simple, tu repéres un text dans la page à coté du formulaire, tu affiche la source, tu cherches ton text et pas loin tu as ton code formulaire et le nom !

Merci de mettre ton post en resolu si c'est le cas :D

Re: [..] Gestion de l'_IE

Posté : mer. 09 janv. 2008 20:05
par Voodoo
message reorienté de 123456789:

Voilas j'ai un soucil avec le scripte de login pour laposte.net si tu pourrais m'aider sa serai super :)

Citation:

Code : Tout sélectionner

While 1
 
$msg = GUIGetMsg()
 
Select
 
case $msg = $Button_exit
$msg = $GUI_EVENT_CLOSE
Exit
 
case $msg = $Button_connexion
$oie = _IECreate("http://laposte.net/")
_IELoadWait ( $oie )
Sleep(250)
$p = GUICtrlRead($login)
$m = GUICtrlRead($mdp)
If $p <> "" And $m <> "" Then
$userlogin = _IEFrameGetObjByName($oIE, "userlogin")
$FormPrincipale = _IEFormGetObjByName ($oIE, "f1")
$userINPUT = _IEFormElementGetObjByName ($FormPrincipale, "nom")
$passwordINPUT = _IEFormElementGetObjByName ($FormPrincipale, "motDePasse")
 
EndIf

Re: [..] Gestion de l'_IE

Posté : mer. 09 janv. 2008 20:21
par Voodoo
A premiére vu l'indentation est plutot farfelu ! Un bon exemple !

Code : Tout sélectionner

 
$age=3
if $age =3 then 
msgbox(0,"e",$age)
else
if $age=4 then 
msgbox(0,"e",$age)
else
if $age = -5 then 
msgboxx(0,"e","erreur")
endif
endif
endif
 
est beaucoup moin facile à lire que:

Code : Tout sélectionner

 
$age=3
if $age =3 then 
   msgbox(0,"e",$age)
   else
     if $age=4 then 
        msgbox(0,"e",$age)
     else
       if $age = -5 then 
          msgboxx(0,"e","erreur")
       endif
    endif
endif
 
Si tu edites ton code autoit3 sous Scite, tu fais ctrl+t et il te fait l'indentation automatiquement ! Sinon il faut le faire sois même. Tu gagnes en lisibilité et tu ne passes pas 1 heure à chercher le endif qui c'est fais la malle.

Ensuite je suppose que c'est un bout de code, si tu veux avoir de l'aide rapidement il nous faut tout le code qui se réfere à ton probléme afin d'avoir tous les elements en main.

Pour ce qui est du code, tu aurais pu prendre le mien qui est fonctionnel :) . Sinon tu ne dois pas utiliser le formulaire principale ! tu n'as qu'un seul formulaire à avoir c'est le "userlogin".
Enfin n'oublie pas le

Code : Tout sélectionner

_IEFormElementSetValue($objet_input_html, "valeuramettre")
_IEFormSubmit($objet_form)

Re: [..] Identification avec _IE

Posté : jeu. 10 janv. 2008 00:12
par 123456789
Nan je les disposer proprement ses en le collant que ça a fait ça ...
voilas la partie entière =>

Code : Tout sélectionner

;//////////////////////////;
;///////Boot LaPoste///////;
;//////////////////////////;
 
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
#include <File.au3>
 
 
;/////1er Gui avec image/////;
 
$Form1 = GUICreate("Boot LaPoste", 362, 258, 584, 319, BitOR($WS_CAPTION, $WS_POPUP, $WS_BORDER, $WS_CLIPSIBLINGS))
$GroupBox1 = GUICtrlCreateGroup("", -8, -8, 373, 270)
$Image1 = GUICtrlCreatePic("C:\Users\van\Desktop\van-helsing-dracula-wolf.jpg", 0, 0, 365, 260)
$Label2 = GUICtrlCreateLabel("Version : 1.0.0", 1, 240, 87, 17, $WS_GROUP)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlSetState(-1, $GUI_HIDE)
GUISetState(@SW_SHOW)
Sleep(3000)
GUIDelete()
 
 
$Form2 = GUICreate("Boot LaPoste", 387, 143, 585, 302)
GUISetIcon("C:\Program Files\AutoIt3\Icons\filetype3.ico")
$login = GUICtrlCreateInput("", 104, 25, 121, 21)
$Label1 = GUICtrlCreateLabel("Adresse mail :", 24, 32, 69, 17)
$Label2 = GUICtrlCreateLabel("Mot de Passe :", 24, 64, 75, 17)
$mdp = GUICtrlCreateInput("", 104, 57, 121, 21)
$Group1 = GUICtrlCreateGroup("Login", 8, 8, 369, 89)
GUICtrlSetColor(-1, 0xFF0000))
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button_connexion = GUICtrlCreateButton("Connexion", 24, 112, 75, 25, 0)
$Button_profile_enregistre = GUICtrlCreateButton("Enregistrer profile", 256, 24, 107, 25, 0)
$Button_profile_charge = GUICtrlCreateButton("Charger profile", 264, 56, 91, 25, 0)
$Button_exit = GUICtrlCreateButton("Quitter", 280, 112, 75, 25, 0)
GUISetState(@SW_SHOW)
DirCreate("profil")
 
 
While 1
 
    $msg = GUIGetMsg()
 
    Select
        
        Case $msg = $Button_exit
            $msg = $GUI_EVENT_CLOSE
            Exit
            
        Case $msg = $Button_connexion
            
            $oie = _IECreate("http://www.laposte.net/")
            _IELoadWait($oie)
            $p = GUICtrlRead($login)
            $m = GUICtrlRead($mdp)
            If $p <> "" And $m <> "" Then
                $obj_userlogin = _IEFormGetCollection($oie, 0)
                $obj_user = _IEFormElementGetCollection($obj_userlogin, "Identifiant")
                $obj_password = _IEFormElementGetCollection($obj_userlogin, "Mot de passe")
 
                _IEFormElementSetValue($obj_user, $p)
                _IEFormElementSetValue($obj_password, $m)
 
                _IEFormSubmit($obj_userlogin)
            EndIf
            
 
        Case $msg = $Button_profile_charge
            FileExists("profil/login.ini")
            $p = IniRead("profil/login.ini", "Identifiants", "Adresse mail", "NotFound")
            $m = IniRead("profil/login.ini", "Identifiants", "Mot de passe", "NotFound")
            GUICtrlSetData($login, $p)
            GUICtrlSetData($mdp, $m)
            
        Case $msg = $Button_profile_enregistre
            $p = GUICtrlRead($login)
            $m = GUICtrlRead($mdp)
            $Pseudo1 = IniWrite("profil/login.ini", "Identifiants", "Adresse mail", $p)
            $Mdp1 = IniWrite("profil/login.ini", "Identifiants", "Mot de passe", $m)
 
    EndSelect
WEnd

Re: [..] Identification avec _IE

Posté : jeu. 10 janv. 2008 15:44
par Voodoo
la partie :

Code : Tout sélectionner

 
                $obj_userlogin = _IEFormGetCollection($oie, 0)
                $obj_user = _IEFormElementGetCollection($obj_userlogin, "Identifiant")
                $obj_password = _IEFormElementGetCollection($obj_userlogin, "Mot de passe")
 
                _IEFormElementSetValue($obj_user, $p)
                _IEFormElementSetValue($obj_password, $m)
 
                _IEFormSubmit($obj_userlogin)
 
Ne fonctionne pas et ne correspond pas à la solution que je t'ai donné !

Pour le champ input tu peux mettre un style special:

Code : Tout sélectionner

$mdp = GUICtrlCreateInput("", 104, 57, 121, 21,$ES_PASSWORD)
La croix de la gui ne fonctionne pas pour fermer la fenetre, il faut remplacer le code correspondant par celui la:

Code : Tout sélectionner

 
      Case $msg = $Button_exit or $msg = $GUI_EVENT_CLOSE
            Exit

Re: [..] Identification avec _IE

Posté : jeu. 10 janv. 2008 21:39
par 123456789
Même si je replace par se que tu ma mis ses pareille...
peut être que le code que tu m'a donner est juste mais je n'arrive pas a coller se qui a dans le gui et le coller dans la page internet pourtant j'ai copier correctement se qui a dans le gui a l'aide de GuiCtrlRead, a mon avis ça doit venir de la partie "_IEFormElementSetValue" mais je n'en ses rien :?

Code : Tout sélectionner

        Case $msg = $Button_connexion
            
            $oie = _IECreate("http://www.laposte.net/")
            _IELoadWait($oie)
            $p = GUICtrlRead($login)
            $m = GUICtrlRead($mdp)
 
            $obj_form = _IEFormGetCollection ($oIE, 0)
            $obj_login = _IEFormElementGetCollection ($obj_form , 0)
            $obj_mdp = _IEFormElementGetCollection ($obj_form , 1)
 
            _IEFormElementSetValue ($obj_login ,$p)
            _IEFormElementSetValue ($obj_mdp ,$m)
 
            _IEFormSubmit ($obj_form)

Re: [..] Identification avec _IE

Posté : jeu. 10 janv. 2008 21:53
par Voodoo
Voila le script fonctionnel et il semble que la partie que j'ai mise fonctionne :P

Tu as une erreur à quel niveau ?

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 14:28
par 123456789
bin en faite je lance le scripte, je rentre les log donc adresse mail + mdp puis je click sur connexion sa m'ouvre deux fenêtre d'IE qui ne contien rien elle est blanche puis une deuxième s'ouvre et la ya la page laposte.net mais rien n'est entrer dans les champs...
ps:je suis sous vista

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 15:34
par ani
J'avais déjà conçus un script de ce genre.
On peut passer par la forme comme proposé dans le script à downloader ou directement par les noms des input ou ID de ceux-ci et un petit clique sur l'image [ok] pour se connecter, le problème étant que la page qui vérifie les champs est en https ceux qui veut dire une popup supplémentaire (en tout cas chez moi) qui demande si on veut aller sur la page sécurisé (crypté).

j'ai pas testé le script proposé juste visualisé son contenu, pour la connection j'aurai indiqué l'enregistrement du profile dès le premier lancement et je retirerait le ieloadwait (juste en dessous du iecreate)

Ton explorateur web c'est bien internet explorer ou firefox ?

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 16:39
par 123456789
Sa ouvre IE mais en deux fenêtre dont une qui sert a rien, j'ai essayer sous un xp et sa fonctionne normalement sa doit venir du vista ou de la configuration de mon IE mais elle est tel quelle j'ai rien toucher je suis sur firefox tout le temps je n'utilise pas IE ...
si non j'ai un blanc ses quoi la fonction qui permet d'enregistrer une image a un emplacement sur le DD via un lien
en gros: j'ai un lien vers une img je veut l'enregistrer dans la bécane ses pas RegRead ses autre chose mais j'arrive plus a m'en souvenir et impossible de trouver dans l'aide d'AutoIt si quelqu'un saurais m'aider... :?

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 17:04
par ani
inetget(url, nom du fichier, reload, arrière plan)
(voir aide car j'ai un peu de mal à m'exprimer ^^ )
exemple a écrit :

Code : Tout sélectionner

inetget("http://www.google.ca/intl/fr_ca/images/logo.gif", "google.gif",1,1)
on force le téléchargement de l'image sur le dd avec un nouveau nom, le fichier se trouvera en racine du script, tu peux y indiquer un chemin (c:\mes images\google.gif)

en espérant que sa soit cette fonction ;)

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 17:31
par 123456789
Arf non ses pas cette fonction la fonction don je parle sert a enregistrer une image via un lien dans un fichier, j'avais trouver sa pratique des qu'on veut envoyer un exe a quelqu'un avec un gui qui contient une image comme ça la personne peut voir l'image sur le gui vue que la fonction la télécharge pour lui et l'enregistre dans un fichier.

Re: [..] Identification avec _IE

Posté : ven. 11 janv. 2008 17:47
par ani
je vois pas d'autre fonction (je suis avec une ancienne version d'autoit)

c'est un contrôle comme GUICtrlSetImage ou un télèchargement ?

Si c'est un télèchargement c'est surement une fonction qui utilise l'objet winhttp ou msmxl ou encore une autre.

je visionne sur le site anglais voir les modificiations apporté depuis la version que je dispose.

tu avais aperçu çà ou ? sur le forum anglais ou l'aide ?