[R] Capter le nom d'un input dans une page web sous IE

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

[R] Capter le nom d'un input dans une page web sous IE

#1

Message par cortx »

Bonjour;

Suite à la nouvelle politique de DynDNS, je susi en trian de me faire un script tout simple qui lance IE, se connecte sur le site de DynDNS, rentre mes identifiants et ferme IE.
Je lancerai ce script une fois par mois depuis les taches plannifiés Windows pour ne plus avoir à gérer cela.

Or je bloque sur la récupération de l'inputbox pour rentrer mon identifiant et password.
Pour une fois je ne souhaite pas gérer la position de souris car je me dit que la position des box peux changer si une pub ou un bandeau est ajouté sur le site.

Voici le site en question; https://account.dyn.com/
Il y a deux box à récupérer, celle du login et celle du password (quoi que le password je peux l'avoir avec un coup de tab une fois le login rentré.

J'utilise Autoit Window Info, mais il ne capte pas l'inputbox, il reste fixé sur la page elle-même.
J'ai trouvé deux trois script sur le net, mais chacun me demande de remplir le nom de l'input donc je bloque ou alors sont vieux et ne foncionne plus en l'état.

Quelqu'un pourrait il me filer un coup de pouce là-dessus ?

Merci d'avance.
CortX
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#2

Message par ani »

Bien le bonjour cortx,
Autoit Window Info est un outils pour l'interface ()
Pour IE un simple F12 lance l'outils d'analyse page web 'Outils développement'. ou de lire la source de la page vers la ligne 103 y a toute les information pour y remplire la Form de connection.
Comme cette exemple

Code : Tout sélectionner

#include <IE.au3>
$User = "test"
$Pass = "1234"
$oIE = _IECreate ("http://account.dyn.com")
$oForm = _IEFormGetCollection ($oIE, 0)
$oUserName = _IEFormElementGetObjByName ($oForm, "username")
$oPassWord = _IEFormElementGetObjByName ($oForm, "password")
_IEFormElementSetValue ($oUserName, $User)
_IEFormElementSetValue ($oPassWord, $Pass)
_IEFormSubmit($oForm)
bonne continuation ;)
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#3

Message par cortx »

BOnjour;

Merci pour l'information;
Ce que je dois récupérer comme information c'est donc frm.elements['password'],
Est ce que frm.elements c'est une constante de nom que je retrouverai sur tous les sites ?
Comment rechercher ce genre d'info sur n'importe quel site sans s'y connaitre un minimum ?
Je suppose que tu ne t'es pas tappé les 110 lignes de code en lecture du soir.

Edit;
Erreur sur
C:\Program Files (x86)\AutoIt3\Include\IE.au3 (1802) : ==> The requested action with this object has failed.:
$o_object.submit()
$o_object.submit()^ ERROR
*
Quant je demande à afficher $oForm via "msgbox (0, "", $oForm)" il n'y à rien de renvoyé.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#4

Message par ani »

Ce code-ci devrait fonctionne

Code : Tout sélectionner

#include <IE.au3>
$User = "test"
$Pass = "1234"
$oIE = _IECreate ("http://account.dyn.com")
$oForm = _IEFormGetCollection ($oIE, 0)
$oUserName = _IEFormElementGetObjByName ($oForm, "username")
$oPassWord = _IEFormElementGetObjByName ($oForm, "password")
$oSubmit = _IEFormElementGetObjByName($oForm, "submit")
_IEFormElementSetValue($oUserName, $User)
_IEFormElementSetValue($oPassWord, $Pass)
_IEAction($oSubmit,"click")
Pour obtenir les noms des inputs

Code : Tout sélectionner

$oIE = _IECreate ("http://account.dyn.com")
$oForm = _IEFormGetCollection ($oIE,0)
$oInputs = _IETagNameGetCollection($oForm,"input")
ConsoleWrite("Form Info:Name:" & $oForm.name & " - id:"& $oForm.id & " - Action:"& $oForm.action & @LF)
For $oInput In $oInputs
    ConsoleWrite("input Info:Name:" & $oInput.name & " - id:"& $oInput.id & " - type:"& $oInput.type & @LF)
Next
Exit
Non tu ne trouvera pas cette constantes sur tout les sites.
Et non je ne me suis pas tapé le code Source en entier juste survolé, j'aurai du m'y attardé un peu, pour y observer le antisubmit.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#5

Message par mikell »

Donc en appliquant la recette de ani ceci devrait marcher

Code : Tout sélectionner

#include <IE.au3>
$User = "test"
$Pass = "1234"
$oIE = _IECreate ("http://account.dyn.com")
$oInputs = _IETagNameGetCollection($oIE,"input")
  For $oInput In $oInputs
      If $oInput.name == "username" Then $oInput.innertext = $User
      If $oInput.name == "password" Then $oInput.innertext = $Pass
      If $oInput.name == "submit" Then _IEAction($oInput, "click")
 Next
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#6

Message par cortx »

Bonjour;

Merci pour vos codes, cela fonctionne à la perfection.

Mikell, dans ton site tu test savoir si l'input à bien la valeur 'username' par exemple pour la remplir.
Mais concrètement cela sert à quoi comparé au remplissage 'en force' comme le fait ani ?
Simplement à ne pas renvoyer d'erreur au cas ou le site change à la mode: "Comme ça n'existe pas, alors je ne fais pas mais ce n'est pas une erreur"
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#7

Message par mikell »

Pas de différence majeure entre les scripts, juste une autre approche dans l'idée du titre du sujet : lister les inputs et vérifier leurs noms
Note que dans le script d'ani tu peux utiliser _IEGetObjByName et zapper la rechercher de form, ça marche aussi
" 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
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Capter le nom d'un input dans une page web sous IE

#8

Message par jguinch »

Salut.
J'avais trouvé ça sur le forum US, un petit truc sympa qui permet d'avoir quelques infos sur une page.
C'est plus rapide que de fouiner dans le source... :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre