J'ai crée un programme qui me permet d'exécuter quelques actions sur internet.
Le principe du programme est de:
-se connecter au site internet en question
-se loguer
-sélectionner dans un menu déroulant un choix
-Valider le choix en cliquant sur un lien
-La validation affiche une nouvelle page et ouvre une nouvelle fenêtre IE
-Revenir à la page précédente
Ensuite je répète ces actions le nombre de fois nécessaire.
Mon problème vient du faite de répéter les actions, j'arrive par exemple à valider deux choix mais lors du troisième je vais avoir le message d'erreur suivant:
Code : Tout sélectionner
--> IE.au3 V2.4-0 Warning from function _IEFormGetCollection, $_IEStatus_NoMatch
--> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Error from function _IEFormElementOptionSelect, $_IEStatus_InvalidDataType
--> IE.au3 V2.4-0 Warning from function _IELinkClickByIndex, $_IEStatus_NoMatchCode : Tout sélectionner
;#NoTrayIcon
#include<IE.au3>
#include <Process.au3>
Global $AdressGame="http://www.xxxxxxxxxxx.com/"
Global $Login="lxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Global $Login2="xxxxxxxxxxxxxxxxxxxxxxxxxx"
Global $Pass="xxxxxxx"
Global $CurrentLogin
Global $IEPage
Global $NbCount=0
Global $NbDraw=1
;Hot Keys
$Exit = "{esc}" ;Key you hit to Exit the bot
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Hot Keys;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HotKeySet( $Exit , "ProcessExit")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;End Of Hot Keys;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Main;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TrayTip("xxxxxxxxxx","Start", 1)
while $NbCount<2
SelectCount()
TrayTip("xxxxxxxxxx",$CurrentLogin, 1)
Ccleaner()
login()
while $NbDraw<4
SelectList()
$NbDraw+=1
WEnd
logout()
_IEQuit ($IEPage)
$NbCount+=1
$NbDraw=1
WEnd
TrayTip("xxxxxxxxxx","End", 1)
sleep(1000)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End Main;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SelectCount;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func SelectCount()
if $NbCount=0 then
$CurrentLogin= $login
EndIf
if $NbCount=1 then
$CurrentLogin= $login2
EndIf
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End SelectCount;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Login;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func login()
$IEPage = _IECreate ($AdressGame)
$Formulaire = _IEFormGetCollection($IEPage, 0)
$Input_Username = _IEFormElementGetObjByName($Formulaire, "login")
_IEFormElementSetValue($Input_Username, $CurrentLogin)
$Input_Password = _IEFormElementGetObjByName($Formulaire, "password")
_IEFormElementSetValue($Input_Password, $Pass)
_IEFormSubmit($Formulaire )
_IELinkClickByText ( $IEPage,"Fermer" )
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End login;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Logout;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func logout()
_IELinkClickByText ( $IEPage,"Se déconnecter")
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End logout;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SelectList;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func SelectList()
if not @error Then
$Lists = _IEFormGetCollection($IEPage,0)
$Favoris=_IEFormElementGetObjByName ($Lists ,"liste_consumer_save_grid" )
_IEFormElementOptionSelect ( $Favoris,$NbDraw,1,"byIndex")
$PubLink=Random(14,25,1)
_IELinkClickByIndex ($IEPage,$PubLink,1)
_IENavigate ( $IEPage,$AdressGame ) ; retour à la page précédente
[color=#FF0000] _IELoadWait($IEPage)[/color] ; inutile car intégré à _IENavigate
;_IEAction ($IEPage, "back" )
;_IELoadWait($IEPage) ; Attendre le chargement de la page précedent
EndIf
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End SelectListFirst;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;Close Programm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func ProcessExit()
_IEQuit ($IEPage)
TrayTip("xxxxxxxxxxxxxxxxxx","End", 1)
sleep(1000)
Exit
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;End Close Programm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ccleaner;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Ccleaner()
$Nettoyer="ccleaner /auto"
_RunDOS($Nettoyer)
ProcessWaitClose ( "ccleaner.exe" ,600000)
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;Ccleaner Close Programm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PS: Comment prendre le contrôle de la page IE supplémentaire quand on clique sur le lien.

