[..] _IELoadWait, problème d'attente d'un page web

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
baconix
Niveau 3
Niveau 3
Messages : 34
Enregistré le : lun. 13 juil. 2009 15:12
Status : Hors ligne

[..] _IELoadWait, problème d'attente d'un page web

#1

Message par baconix »

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:

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_NoMatch
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?

Code : 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.
Baconix
Répondre