Salut,
Voici le retour
La fonction _IEAFWaitObjet permet de se prémunir contre les pb d'asynchronisme et de ne pas avoir à ajouter des sleep un peu partout
Testé sur un IE10 avec Win7 64 bits
Attention : Il faut être déconnecté au départ sinon planté
Code : Tout sélectionner
#include-once
#include <IE.au3>
;Lancement navigateur
Local $oIE = _IECreate("http://www2.leboncoin.fr/ai/form/0")
If Not @error Then WinWaitActive("Formulaire","",20)
If Not @error Then WinSetState("Formulaire", "",@SW_MAXIMIZE)
If Not @error Then Local $oForm = _IEAFWaitObjet($oIE,"loginform","_IEFormGetObjByName",10)
;Renseigner Email et password
If Not @error Then Local $oName = _IEAFWaitObjet($oForm,"st_username","_IEFormElementGetObjByName",10)
If Not @error Then _IEFormElementSetValue($oName, "mail")
If Not @error Then Local $oPass = _IEAFWaitObjet($oForm,"st_passwd","_IEFormElementGetObjByName",10)
If Not @error Then _IEFormElementSetValue($oPass, "psw")
If Not @error Then _IEFormSubmit($oForm,0)
If Not @error Then WinWaitActive("Compte","",20)
If Not @error Then _IENavigate($oIE,"http://www2.leboncoin.fr/ai?ca=16_s")
If Not @error Then WinWaitActive("Formulaire","",20)
;*********************
; SELECT LOCALISATION
;*********************
If Not @error Then Local $oRegion = _IEAFWaitObjet($oIE,"formular","_IEFormGetObjByName",10)
If Not @error Then Local $oSelect = _IEAFWaitObjet($oRegion,"region","_IEFormElementGetObjByName",10)
If Not @error Then _IEFormElementOptionSelect($oSelect, "Midi-Pyrénées", 1, "byText")
; #FUNCTION#============================================================================================================
; Name...........: _IEAFWaitObjet
; Description ...: Attendre un objet
; Syntax ........: _IEAFWaitObjet($pHandle, $pObj, $pMeth, $pTimer)
; Parameters ....: $pHandle - Le handle du parent (Voir documentation associée à la méthode $pMeth)
; $pObj - L'objet (Voir documentation associée à la méthode $pMeth)
; $pMeth - La méthode à utiliser pour obtenir l'objet
; $pTimer - Max attente en secondes
; Return values .: On Success - L'objet
; On Failure - -1
; Error values ..: 0 si OK, Le code erreur sinon
; Author :
; Version du : V1.0 du 07/03/2013
; Création
; ===============================================================================================================================
Func _IEAFWaitObjet ($pHandle, $pObj, $pMeth, $pTimer)
Local $objet
Local $xi = 0
Local $erreur = 1
While($erreur <> 0 And $xi < $pTimer)
Switch $pMeth
Case "_IEFormGetObjByName"
; Récup property
$objet = _IEFormGetObjByName($pHandle, $pObj)
Case "_IEGetObjByName"
; Recup des forms
$objet = _IEGetObjByName($pHandle, $pObj)
Case "_IEFormElementGetObjByName"
; récup objet par name
$objet = _IEFormElementGetObjByName($pHandle, $pObj)
Case "_IEFormElementOptionSelect"
; Modif selection
$objet = _IEFormElementOptionSelect($pHandle, $pObj)
Case "_IEGetObjById"
; Récup Id
$objet = _IEGetObjById($pHandle, $pObj)
Case "_IEPropertyGet"
; Récup property
$objet = _IEPropertyGet($pHandle, $pObj)
Case Else
$erreur = -1
$xi = $pTimer
EndSwitch
$erreur = @error
$xi = $xi + 1
Sleep(1000)
WEnd
If ($erreur <> 0) Then
SetError($erreur)
$objet = -1
EndIf
Return $objet
EndFunc