Re: [..] Pb de Wend dans include IE.au3 (Ligne 560)
Posté : jeu. 22 mars 2012 13:41
Bonjour,
Alors le contexte
Nous avons un site intranet qui permet aux utilisateurs de passer des demandes de soumission de traitements à un outil, CA7 pour ne pas le nommer
Jusque la, des opérateur lisaient les demandes et intervenaient en conséquence
Hors, après analyse, il s'est avéré que 80% de ces demandes pouvaient être traitées de façon automatisée, d'où le robot
La logique
Toutes les 3 minutes
- Connect (Url) ; Liste des demandes reçues
- Pour chaque demande
- Navigate (Ouverture de la demande)
- Navigate (Prise en compte)
...
...
Fpour
- IEquit (Fin de session)
Et le système se rendort pour 3 minutes
Le code
Oila
Alors le contexte
Nous avons un site intranet qui permet aux utilisateurs de passer des demandes de soumission de traitements à un outil, CA7 pour ne pas le nommer
Jusque la, des opérateur lisaient les demandes et intervenaient en conséquence
Hors, après analyse, il s'est avéré que 80% de ces demandes pouvaient être traitées de façon automatisée, d'où le robot
La logique
Toutes les 3 minutes
- Connect (Url) ; Liste des demandes reçues
- Pour chaque demande
- Navigate (Ouverture de la demande)
- Navigate (Prise en compte)
...
...
Fpour
- IEquit (Fin de session)
Et le système se rendort pour 3 minutes
Le code
Code : Tout sélectionner
Func _afIEInternalConnect($pUrl, $pLogon, $pPsw, $pFenetre, $pWait, $pLog)
Local $fenetre = $pFenetre
SetError(0)
; On ouvre ou on navigue dans une fenêtre Internet
If ($pFenetre = -1) Then
$fenetre = _IECreate($pUrl,False,True,$pWait)
Else
_IENavigate($fenetre, $pUrl ,$pWait)
EndIf
If (@error) Then
_afLogEcrire($pLog, "_afIEInternalConnect", @error , "Connect / Navigate ")
$fenetre = -1
Else
; Maximiser la fenêtre
WinSetState("[CLASS:IEFrame]", "", @SW_MAXIMIZE)
; On récupère l'url
Local $_url = _IEPropertyGet($fenetre, "locationurl")
If (@error) Then
_afLogEcrire($pLog, "_afIEInternalConnect", @error, "LocationUrl ")
ElseIf (StringInStr($_url, "https://xxxxxxxxxxxxx") <> 0) Then ; Habil
; Récup du handle sur le user et le password
Local $user = _IEGetObjByName($fenetre, "USER")
Local $password = _IEGetObjByName($fenetre, "PASSWORD")
_IEFormElementSetValue($user, $pLogon)
_IEFormElementSetValue($password, $pPsw)
; On récupère le bon bouton
; Comme celui ci n'a ni nom, ni id, on le recherche par son tag
Local $oInputs = _IETagNameGetCollection($fenetre, "input")
For $oInput In $oInputs
If ($oInput.value = "valider / confirm") Then
$oInput.click() ; Trouvé => Click
ExitLoop
EndIf
Next
If (@error) Then
_afLogEcrire($pLog, "_afIEInternalConnect", @error , "Passage Habil ")
EndIf
EndIf
EndIf
; Tout est ok pour l'instant ?
If (not @error And $pWait) Then
; Load complet ?
_IELoadWait($fenetre)
If (@error) Then
_afLogEcrire($pLog, "_afIEInternalConnect", @error , "Chargement page en erreur ")
Else ; Log sur la bonne page ?
Local $objTd = _IEGetObjById($fenetre, "tableProps")
If (not @error) Then
_afLogEcrire($pLog, "_afIEInternalConnect", $GCERR401 , "Chargement page en erreur ")
SetError($GCERR401)
Else
Sleep(2000) ; Pour être sur que les onload soient ok
EndIf
EndIf
ElseIf (@error) Then
If ($fenetre <> -1) Then
_IEQuit($fenetre)
EndIf
EndIf
Return $fenetre
EndFunc