[R] Détecter présence objets IE ss attendre chargement page

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

[R] Détecter présence objets IE ss attendre chargement page

#1

Message par legend »

Bonjour,
J'ai besoin d'utiliser les fonctions IE pour remplir un formulaire dans un site.
Le problème ce que il y a des erreurs (javascript) dans la page qui fait que le chargement ne finis jamais.
donc il est impossible d'utiliser le wait par default de la fonction IECreate.
j'ai pensé donc a vérifier si les éléments de formulaire existent dans la page dans une boucle.

Code : Tout sélectionner

$ie = _IECreate ("http://www.oleoo.com/post.php?fid=228", 0, 1, 0)
while 1
$titre = _IEGetObjByName ($ie, "req_subject")
if @error then
    sleep (10)
Else
    ExitLoop
EndIf
mais il parait que le @error ne joue pas son role ("ne pas quitter le script en cas d'erreur")

Code : Tout sélectionner

C:\Program Files (x86)\AutoIt3\Include\IE.au3 (2348) : ==> The requested action with this object has failed.:
If IsObj($o_object.document.GetElementsByName($s_Id).item($i_index)) Then
If IsObj($o_object.document^ ERROR
quelqu'un a une solution? (autre que sleep et winwait)
possible de re-écrire les fonctions IE pour que ça foire pas en cas d'erreur?

Aussi, comment mettre une valeur a un objet du type <input type = "file"> (spécifie l'emplacement d'un fichier avec parcourir pour lui faire un upload vers un serveur.)
merci et bonne journée.
Modifié en dernier par legend le ven. 05 août 2011 19:57, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] détecter présence objets IE ss attendre chargement

#2

Message par Iste »

Ha bah, quand ça plante, on va pas se contenter de lever un @error !

Essayez plutôt de récupérer la source de la page, et regarder avec autoit si votre formulaire existe.

J'ai essayé de faire le test, mais sans la page buggée pas réussi a le reproduire.
Signez ici
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#3

Message par legend »

j'ai essayé d'utiliser l'objet basique qui est le document.
il semble qu'il est détecté comme objet avec le handle IE. (j'ai ajouté un winwait ("nom de la fenêtre")) puisque l'erreur est dans cette ligne (action sur l'objet a échoué) quand j'utilise _IEDocReadHtml.
Return SetError($_IEStatus_Success, 0, $o_object.document.documentElement.outerHTML)
et peut être que l'un de ses sous-objets .documentElement.outerHTML est non chargé.
donc le moyen est de trouver comment ne pas arrêter le script quand l'action sur un objet échoue.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#4

Message par Iste »

Ok, tant pis alors...

Vous pourrez vous en sortir avec ceci je pense, si l'objet n'est pas planté apres l'erreur :
http://www.autoitscript.fr/forum/viewto ... f=3&t=2811
Signez ici
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#5

Message par sksbir »

Bonjour

que donnerait quelque chose du style :

Code : Tout sélectionner

while 1
$titre = _IEGetObjByName ($ie, "req_subject")
if not(isobj($titre)) then
    sleep (10)
Else
    ExitLoop
EndIf
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#6

Message par mikell »

Avec InetGet("http://www.oleoo.com/post.php?fid=228", @desktopDir & "\oleoo.html") on récupère le code-source mais "req_subject" n'y figure pas
Et en essayant un _IECreate sur le html obtenu, IE devient fou et affiche des alertes de sécurité qui bloquent le chargement :shock:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#7

Message par legend »

pour le ISobject je crois que j'étais clair en disant que le script se ferme quand l'action sur l'objet document échoue. (qui se passe dans la ligne _IEGetObjByName et ne permet pas d'aller a la ligne suivante).
il se peut que le script se ferme parce que dans la fonction il y a plusieurs lignes et l'erreur se passe dans une ligne qui n'est pas la dernière et passe a la ligne suivante sans @error. (je vais faire les tests)
@mikell : il faut s'identifier pour accéder a la page. sinon re-direction.
_INet ne permet pas de remplir des formulaire et de les envoyer.
je pense qu'il serait possible de créer le formulaire sur une page sur mon pc avec les mêmes name pour les objets de formulaire et détecter les variables de session pour avoir un statut connecté. mais reste s'ils peuvent faire une détection de quelle page vient le formulaire.
@Iste: Magique!! ça marche :mrgreen: :mrgreen: merci beaucoup!
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Détecter présence objets IE ss attendre chargement

#8

Message par Iste »

Mais de rien.
Penser a passer votre titre en résolu [R] si cela vous convient.
Et n'abusez pas de ce genre de technique quand on peut s'en passer ;)
Signez ici
Répondre