[R] _IE, écrire dans une Input protégée(?)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

[R] _IE, écrire dans une Input protégée(?)

#1

Message par blacksoul305 »

Salut, blacksoul305 qui vous parle !

Alors, voilà le problème. La fin du titre n'est 't'être pas clair, c'est pourquoi je vais vous expliquer tout ça correctement.

Depuis peu, je me suis intéressé aux fonctions _IE, et j'envisage de me faire un 'tit programme bien sympathique, cependant, ça coince. Le programme devra ajouter un commentaire sur un post de Facebook, et AMHA ( ;) jchd et mikell), pour éviter que l'on fasse des programmes malicieux, les InputBox ont été protégées par le procédé suivant :

Code : Tout sélectionner

$faceInputName = "add_comment_text"
$toSend = _IEGetObjByName($IE,$faceInputName)
_IEFormElementSetValue($toSend,GUICtrlRead($Edit1))
Pour les personnes qui ont un facebook, vous verrez la phrase "Rédiger un comentaire..." et que si vous n'écrivez pas, elle reste écrite, vous ne pouvez pas l'envoyer. Donc le code ne marche pas, il change juste la phrase de la soit dite protection.

Voici un morceau de code de la page, attention, l'affichage étant assez bordélique, téléchargez Notepad++ et activez la coloration syntaxique pour HTML
► Afficher le texte
Je peux comprendre que la demande semble assez tordue, à vous de juger. Je vous remercie de toute l'aide que vous pourrez m'apporter !

EDIT : Correction du code AutoIt

EDIT2 : J'ai aussi essayé avec l'ID, mais ça ne donne rien non plus... Est-ce sans espoir ?
Modifié en dernier par blacksoul305 le jeu. 03 mai 2012 18:24, modifié 1 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#2

Message par mikell »

Moi pas connaître fessebouc cette invention diabolique mais as-tu essayé avant le SetValue

Code : Tout sélectionner

_IEAction ($toSend, "focus")
Sinon ya ControlSend avec cet exemple pris dans l'aide pour _IEAction

Code : Tout sélectionner

#include <IE.au3>
$oIE = _IE_Example ("form")
$oSubmit = _IEGetObjByName ($oIE, "submitExample")
$hwnd = _IEPropertyGet($oIE, "hwnd")
_IEAction ($oSubmit, "focus")
ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
Sinon c'est qu'ya du javascript qui te bloque et là c'est mort ^^
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#3

Message par blacksoul305 »

Oui, le focus j'y avais pensé, j'ai pourtant fait des recherches pour donner le focus sur un contrôle _IE et j'ai rien vu ! Je vais tester tout cela, je te tiens au courant. En ce qui concerne le javascript, je pense que c'est la fonction pour "envoyer" le message.

Bref, je te remercie, j'édite le poste pour te dire ce qu'il en ai !

EDIT : Ça fonctionne, sans fonctionner :lol:

Je peux commenter une première fois tranquillement, mais voilà que quand je veux re-commenter, bah ça plante :

Code : Tout sélectionner

$messageToSend = GUICtrlRead($Edit1)
$toSend = _IEGetObjByName($IE,$facebookInputName)
_IEAction($toSend,"focus")
_IEFormElementSetValue($toSend,$messageToSend)
Sleep(20)
ControlSend($myTitleWin, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")
 
Erreur :
C:\Program Files\AutoIt3\Include\IE.au3 (2452) : ==> The requested action with this object has failed.:
$o_object.Focus()
$o_object.Focus()^ ERROR
EDIT2 : J'ai essayé le code suivant, ça fait comme mon problème initial, je ne rempli par l'Input mais seulement le message qui demande de rentrer un commentaire !
► Afficher le texte
Merci encore de ton aide !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#4

Message par mikell »

Si ça marche 1 fois, alors ça doit remarcher
The requested action with this object has failed.:
$o_object.Focus()^ ERROR
ça veut dire qu'il n'a pas trouvé l'objet $toSend, donc ou sa définition a changé, ou c'est un chargement de page incomplet
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#5

Message par blacksoul305 »

mikell a écrit :Si ça marche 1 fois, alors ça doit remarcher
The requested action with this object has failed.:
$o_object.Focus()^ ERROR
ça veut dire qu'il n'a pas trouvé l'objet $toSend, donc ou sa définition a changé, ou c'est un chargement de page incomplet
Mais c'est bizarre.... Oh, attends, je vais essayer de rafraîchir la page !!

J'édite pour les résultats !

EDIT : Ça marche pas, pourtant, quand je poste le second message, il me ferme le prog en m'affichant l'erreur que j'ai écrite, et quand je relance le prog à la même page, ça remarche, pour avoir le même problème au second envoie ! C'est dingue !!

EDIT2 : J'ai essayé manuellement en postant un commentaire ; afficher le code source de la page ; ré-envoyer ; ré-analyser, le seul paramètre dont je tiens compte (le nom de l'input) ne change pas du tout !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#6

Message par mikell »

Tu as vérifié dans le code source de la page après le 1er message que le $faceInputName="add_comment_text" est toujours valable ?
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#7

Message par blacksoul305 »

Oui, et il s'appelle toujours pareil (dans le code source de la page.) ...

EDIT : L'id a l'air de changer, c'est pourquoi mes différents tests ne fonctionnent pas quand j'essaye de remplir l'input avec celle-ci. Le nom de l'input ne change pas par contre : "add_comment_text" !!
Modifié en dernier par blacksoul305 le mar. 01 mai 2012 15:53, modifié 1 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#8

Message par mikell »

je ne rempli pas l'Input mais seulement le message qui demande de rentrer un commentaire !
c'est ça qui est bizarre... c'est le même controle qu'il faut remplir ?
Tu peux tenter un ControlSend après avoir vérifié le focus...
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] _IE, écrire dans une Input protégée(?)

#9

Message par blacksoul305 »

Lis-le message du haut que j'ai édité ! On s'est marché dessus une nouvelle fois !

EDIT : Ça va être impossible je pense ...

EDIT2 : Bon, je serai absent maintenant, je peux plus faire de test, je sais plus où donne de la tête ! Merci aux gens qui se pencheront sur mon problème, merci mikell pour ton aide !

EDIT3 : Voilà où ça en est. Malgré mon temps plutôt... Comme qui dirait limité, j'ai réussi à faire marcher quelques chose sur le même type d'input dite protégée sur le site Facebook, ce sont par contre les messages privés.

Voici le code de celles-ci :

Code : Tout sélectionner

<textarea class=​"MessagingComposerBody DOMControl_placeholder" title=​"Répondre..." [color=#FF0000][u]name=​"message_body"[/u][/color] rows=​"1" placeholder=​"Répondre..." style>​Répondre...​</textarea>​
En écrivant cet édit, j'ai essayé un code et ça fonctionne pour les commentaires de post, quelque chose qui me fait super plaisir. Bref, voilà le code fonctionnel AutoIt et le code HTML concerné :

AutoIt
► Afficher le texte
HTML
► Afficher le texte
Le problème était donc un travail de recherche dont seul moi pouvait faire, j'ai mal analysé le code source de la page, merci mikell de t'être posé quelques minutes/heure sur mon problème !
Étudiant en 2ème année de Licence Informatique.
Répondre