Page 1 sur 2
[R] Aller sur site internet
Posté : ven. 20 avr. 2012 21:51
par jwelcsbe
Bonjour à et toutes.
Ceci est mon premier message sur le forum Autoit.
En effet, je viens de découvrir ce langage que je souhaite maitriser. Il offre un grand de possibilité et je trouve cela vraiment intéressant.
Mon objectif final serait d'arriver à creer un script capable d'ouvrir une page fireFox.
Je pense savoir comment faire avec la fonction ($rc = _RunDos("start firefox.exe"))
Il devra aller sur un site internet, en l’occurrence mon serveur de messagerie et se logger.
D'après quelques petites recherches, il faut chercher dans le code source de la page les champs prêt à remplir et les remplir ?
Si il arrive à se connecter il faudrai qu'il écrive un fichier qui me le dise. Dans lequel il serait écrit par exemple '1'.
Je pense que c'est cette fonction qu'il faut utiliser ici non ? ( FileWriteLine )
je vous remercie de l'aide que vous pourrez m'apporter ainsi que les explications qui me feront m'améliorer.
bien cordialement,
Re: [..] Aller sur site internet
Posté : ven. 20 avr. 2012 21:57
par Tlem
Vous gagnerez en efficacité et simplicité à utiliser les fonctions IE de AutoIt.
Puisque cette recherche est sensée se passer de manière transparente, il n'y a aucun intérêt de passer par FireFox.
Ensuite sur le but de votre script, votre description n'est pas claire. Vous devriez donner un peut plus d'information sur les actions à réaliser.
Re: [..] Aller sur site internet
Posté : ven. 20 avr. 2012 22:08
par jwelcsbe
Excusez moi, je ne connais que très peu ce langage de programmation.
Effectivement il serait plus judicieux de le faire tourner en transparent. Je ne savais pas que cela pouvais se faire.
Je vais essayer d'étoffer plus mes attentes.
Mon script doit être capable d’accéder à mon site de messagerie et de s'y connecter.
Si il y arrive il écrit dans un fichier qu'il y est arrivé, sinon il écrit dans un autre pour dire qu'il n'y est pas arrivé.
je sais pas si c'est peut-être plus clair ?
Bien cordialement,
Re: [..] Aller sur site internet
Posté : ven. 20 avr. 2012 22:25
par blacksoul305
Bonsoir et bienvenue !
Voici un début de script venant à la base de
ce post. Ce n'est qu'une base légèrement commentée pour comprendre la base d'IE, je te suggère de regarder aussi
ce post. Il explique ce qu'est l'IE et répond à quelques questions que tu pourras te poser plus tard.
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <IE.au3>
$ui = GUICreate("Interface utilisateur volée à hilow", 600, 500) ; on créer la GUI
$btn = GUICtrlCreateButton("enregistrer fichier", 10, 10, 200, 25) ; on créer un bouton pour enregistrer un fichier
$wb = _IECreateEmbedded() ; on appel le navigateur embarqué
GUICtrlCreateObj($wb, 10, 40, 580, 450) ; on le met en place ici
GUISetState() ; on montre la GUI
_IENavigate($wb, "http://google.com", 1) ; l'adresse de votre messagerie
While 1
Switch GUIGetMsg()
Case $btn ; si on clique sur le bouton enregistrer
$url = _IEPropertyGet($wb,"locationurl") ; on récupère l'URL
IniWrite(@ScriptDir&"\ie.ini","IE","url",$url) ; on l'écrit
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Voilà voilà !
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 14:34
par jwelcsbe
Merci de ta réponse, c'est vrai que c'est un bon début.
Je commence à mieux comprendre comment marche autoit.
Seulement je comprend pas 2-3 choses.
Pourquoi creer un bouton pour creer un fichier ?
Quand j'arrive sur ma page WEB, il y a directement deux champs à remplir ; User/Password.
Comment lui faire dire que je veux rentrer des valeurs dans ces deux champs ?
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 15:54
par mikell
jwelcsbe a écrit :Quand j'arrive sur ma page WEB, il y a directement deux champs à remplir ; User/Password.
Hum
Si tu nous donnais l'adresse de cette page (histoire de voir son code-source) ça ferait économiser *énormément* de temps et de parlotes ^^
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 16:03
par jwelcsbe
Oui pardon.
J'ai fait quelques petites manips à base de send. ..
je ne sais pas si c'est la meilleur solution.
https://courrier.csbe.qc.ca/owa/
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 17:33
par mikell
Ben voilà

Essaye donc ça
Code : Tout sélectionner
#include <IE.au3>
$oIE = _IECreate ("https://courrier.csbe.qc.ca/owa/")
$identif = _IEFormGetObjByName ($oIE, "logonForm")
$login = _IEFormElementGetObjByName ($identif , "username")
$mdp = _IEFormElementGetObjByName ($identif , "password")
_IEFormElementSetValue ($login, "[color=#FF0000]mylogin[/color]") ; [color=#FF0000]<= à remplir[/color]
_IEFormElementSetValue ($mdp, "[color=#FF0000]mypass[/color]") ; [color=#FF0000]<= à remplir[/color]
_IEFormSubmit ($identif, 1)
msgbox(0,"", $oIE.locationurl)
EDIT : Si l'identification est acceptée, une nouvelle page doit s'ouvrir, avec des caractéristiques différentes (qu'on peut capter) qui permettront de savoir si c'est bon ou pas
Par exemple, dans ce script on envoie dans la MsgBox ce qui est dans la barre d'adresse de cette nouvelle page

Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 17:37
par jwelcsbe
Non sa ne marche pas, il ne remplis pas les champs en questions. . .
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 17:44
par mikell
Tiens, chez moi ça marche mais il me met en bas de la page
"Le nom d'utilisateur ou le mot de passe que vous avez entré n'est pas correct. Essayez de l'entrer à nouveau."
Essaye d'intercaler des Sleep(100)
Re: [..] Aller sur site internet
Posté : lun. 23 avr. 2012 21:27
par blacksoul305
Je valide le script de Mikell, testé comme tel et ça a bien marché pour moi.
Re: [..] Aller sur site internet
Posté : mar. 24 avr. 2012 19:17
par jwelcsbe
Grâce à l'aide précieuse de mikell, nous en sommes arrivé à ce point.
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <IE.au3>
Opt("WinTitleMatchMode", -2)
$wb = _IECreate ("https://courrier.csbe.qc.ca/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fcourrier.csbe.qc.ca%2fowa%2f", 0, 0, 1, 1)
$identif = _IEFormGetObjByName ($wb, "logonForm")
$login = _IEFormElementGetObjByName ($identif , "username")
$mdp = _IEFormElementGetObjByName ($identif , "password")
$ok = "CORRECT /"
$okk = "INCORRECT /"
Local $oSubmit = _IEGetObjByName($wb, "submitExample")
_IEFormElementSetValue ($login, "wyselab01") ; <<
_IEFormElementSetValue ($mdp, "wyselab01") ; <<
$handle = ControlGetHandle("Outlook", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
sleep(500)
ControlFocus("Outlook", "", $handle)
ControlSend("Outlook", "", $handle, "{tab}")
sleep(500)
ControlSend("Outlook", "", $handle, "{enter}")
sleep(500)
_IELoadWait ($wb)
$txt = "wyselab01" & " / " & "wyselab01" & " / " & @HOUR &":"& @MIN & " / "
If StringInStr($wb.locationurl, "logon") Then
$txt &= " __ NON CONNECTE __ "
sleep(500)
FileWrite("PASOK.txt", $okk)
Else
$txt &= " __ CONNECTE __ "
sleep(500)
FileWrite("OK.txt", $ok)
EndIf
sleep(500)
msgbox(0,"", $txt)
Il ne manquerai maintenant qu'une chose.
Je voudrais qu'il y ai une variable, de type booleen, qui soit capable si elle est mise à TRUE, d'exécuter le script en mode transparent.
Si en revanche elle est mises à FALSE, qu'elle éxécute le script en mode transparent, tel qu'il l'est actuellement.
Je vous remercie par avance.
Bien cordialement,
Re: [..] Aller sur site internet
Posté : mar. 24 avr. 2012 19:43
par ani
hein pas suivit :p
si True mode transparent
si False mode transparent
à quoi bon sortir une variable de type booleen ?
Code : Tout sélectionner
$var = true
If $var = False then
....action
else
....action
endif
Re: [..] Aller sur site internet
Posté : mar. 24 avr. 2012 20:45
par blacksoul305
C'est peut être pas beau à voir, mais ça répond aux attentes :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <IE.au3>
Opt("WinTitleMatchMode", -2)
$msgbox = MsgBox(67, "Oh la la", "Voulez vous lancer le processus en mode furtif ?")
If $msgbox = 6 Then
$wb = _IECreate("https://courrier.csbe.qc.ca/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fcourrier.csbe.qc.ca%2fowa%2f", 0, 0, 1, 1)
_reste()
Else
$wb = _IECreate("https://courrier.csbe.qc.ca/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fcourrier.csbe.qc.ca%2fowa%2f")
_reste()
EndIf
Func _reste()
$identif = _IEFormGetObjByName($wb, "logonForm")
$login = _IEFormElementGetObjByName($identif, "username")
$mdp = _IEFormElementGetObjByName($identif, "password")
$ok = "CORRECT /"
$okk = "INCORRECT /"
Local $oSubmit = _IEGetObjByName($wb, "submitExample")
_IEFormElementSetValue($login, "wyselab01") ; <<
_IEFormElementSetValue($mdp, "wyselab01") ; <<
$handle = ControlGetHandle("Outlook", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
Sleep(500)
ControlFocus("Outlook", "", $handle)
ControlSend("Outlook", "", $handle, "{tab}")
Sleep(500)
ControlSend("Outlook", "", $handle, "{enter}")
Sleep(500)
_IELoadWait($wb)
$txt = "wyselab01" & " / " & "wyselab01" & " / " & @HOUR & ":" & @MIN & " / "
If StringInStr($wb.locationurl, "logon") Then
$txt &= " __ NON CONNECTE __ "
Sleep(500)
FileWrite("PASOK.txt", $okk)
Else
$txt &= " __ CONNECTE __ "
Sleep(500)
FileWrite("OK.txt", $ok)
EndIf
Sleep(500)
MsgBox(0, "", $txt)
EndFunc ;==>_reste
Re: [..] Aller sur site internet
Posté : mar. 24 avr. 2012 22:33
par mikell
@blacksoul
Tu pourrais tester ça et me dire si pour toi ça marche ?
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstants.au3>
#include <IE.au3>
Opt("WinTitleMatchMode", -2)
Global $archiveYes = "YES.txt"
Global $archiveNo = "NO.txt"
Global $userselected = "wyselab01"
Global $passselected = "wyselab01"
Global $visible = 0
_Check($userselected, $passselected, $visible)
;=============================================
Func _Check($username, $password, $scriptvisible)
$wb = _IECreate ("https://courrier.csbe.qc.ca/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fcourrier.csbe.qc.ca%2fowa%2f", 0, $scriptvisible, 1, 1)
$identif = _IEFormGetObjByName ($wb, "logonForm")
$login = _IEFormElementGetObjByName ($identif , "username")
$mdp = _IEFormElementGetObjByName ($identif , "password")
Local $oSubmit = _IEGetObjByName($wb, "submitExample")
_IEFormElementSetValue ($login, $username)
_IEFormElementSetValue ($mdp, $password)
$handle = ControlGetHandle("Outlook", "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
ControlFocus("Outlook", "", $handle)
ControlSend("Outlook", "", $handle , "{tab}")
ControlSend("Outlook", "", $handle , "{enter}")
_IELoadWait ($wb)
$txt = $username & @TAB & $password & @TAB & @HOUR &":"& @MIN & @TAB
If StringInStr($wb.locationurl, "logon") Then
$txt &= "non connecté"
FileWrite($archiveNo, $txt & @CRLF)
Else
$txt &= "connecté"
FileWrite($archiveYes, $txt & @CRLF)
EndIf
$wb.visible = 1 ; vérification
;_IEAction ($wb, "quit") ; ferme IE
EndFunc
Re: [..] Aller sur site internet
Posté : mer. 25 avr. 2012 13:30
par blacksoul305
Salut,
alors le code semble fonctionner correctement chez moi.
Le processus est transparent jusqu'à la fin où internet explorer s'affiche avec le pseudo et le mot de passe rentré, le fichier texte est aussi créé en disant qu'il n'a pu se connecter.
Mais ne voulait-il pas une fonction lui permettant si il le veut, de tourner le script soit en mode furtif, ou alors en mode voyant ?
Re: [..] Aller sur site internet
Posté : mer. 25 avr. 2012 14:18
par mikell
Si mais pour ça il suffit de jouer sur la variable $visible
Mais chez moi, quand je lance le script, comme les identifiants sont valables il se connecte et crée un fichier YES.txt
Faudrait peut-être supprimer le 'Opt("WinTitleMatchMode", -2)' et rajouter un WinActivate (le mode invisible fait perdre le focus à la fenêtre)
Code : Tout sélectionner
_IEFormElementSetValue ($login, $username)
_IEFormElementSetValue ($mdp, $password)
WinActivate("Outlook") ; <<
... etc
Re: [..] Aller sur site internet
Posté : mer. 25 avr. 2012 19:38
par blacksoul305
mikell a écrit :(le mode invisible fait perdre le focus à la fenêtre)
Code : Tout sélectionner
_IEFormElementSetValue ($login, $username)
_IEFormElementSetValue ($mdp, $password)
WinActivate("Outlook") ; <<
... etc
Bah c'est logique non ? Ça me viendrai pas à l'idée de donner le focus à une fenêtre invisible.
Pour la variable $visible j'ai pas vu, j'n'ai pas beaucoup de temps et me suis hâter pour te donner les résultats du script.
Enfin, étant donné que j'n'ai pas pris le temps de m'inscrire, j'ai pu tester que dans le cas où ça arrive pas à se connecter.
EDIT : Mais c'es quoi ton soucis, tout à l'air bon de ton côté non ?
EDIT2 : Comment tu as fais pour localiser les deux inputs et les remplir avec ton programme? Je n'arrive pas à comprendre, même en ouvrant le code source de la page web.
Re: [..] Aller sur site internet
Posté : mer. 25 avr. 2012 20:55
par mikell
Pour les input :
Code : Tout sélectionner
<input id="username" name="username" class="txt" type="text">
<input id="password" name="password" class="txt" onfocus="g_fFcs=0" type="password">
Mon souci c'est que le script fonctionne nickel chez moi tel que je l'ai décrit, mais pas chez lui

Re: [..] Aller sur site internet
Posté : mer. 25 avr. 2012 20:59
par blacksoul305
mikell a écrit :Pour les input :
Code : Tout sélectionner
<input id="username" name="username" class="txt" type="text">
<input id="password" name="password" class="txt" onfocus="g_fFcs=0" type="password">
Mon souci c'est que le script fonctionne nickel chez moi tel que je l'ai décrit, mais pas chez lui

Ah, d'accord. Bah va falloir que je regarde encore alors ! Mais sinon, le script fonctionne nickel, je viens de recommencer.