[..] _IELoadWait, problème d'attente d'un page web
Posté : mer. 28 juil. 2010 08:16
Bonjour,
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:
Or je travaille toujours sur la même page, alors je pense que la page n'a pas le temps de se charger. Pourtant j'utilise _IELoadWait, j'en fais une mauvaise utilisation?
PS: Comment prendre le contrôle de la page IE supplémentaire quand on clique sur le lien.
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.