Cliquer sur un lien javascript / contrôle de internet explorer / remplir un formulaire automatiquement / robot

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 103 fois - Téléchargée 18 fois


Contenu du snippet

Comment :
-Cliquer sur un lien javascript
-Contrôler de Internet Explorer
-Remplir un formulaire automatiquement

Permet de cliquer sur un lien javascript de la forme "javascript:newFormulaire()" depuis une appli VBA donc VB.. mais aussi de remplir un formulaire et de valider mais d'autres sources existent pour cela (d'ailleur partie reprise de ces sources dont je remercie les auteurs).

Après de multiples parcours sur VBFrance je n'avais pas trouvé de source permettant de cliquer sur un lien javascript autrement que par son numero d'index dans la collection renvoyée et j'ai pu trouver mon bonheur avec la liste des méthodes, collections, propriétés de IE un peu compliqué mais appréciable quand même :D içi -> http://msdn2.microsoft.com/en-us/library/ms537465(VS.85).aspx#

Ps: penser à rajouter les références Microsoft Internet controls et Microsoft HTML Object Library... ça aide plutôt pas mal pour la complétude du code !!

Source / Exemple :


Option Explicit

'Constantes pour l'état d'IE
Private Const READYSTATE_INTERACTIVE = 3
Private Const READYSTATE_COMPLETE = 4

Private Sub RellenarForm()   

Dim IE As InternetExplorer

'Créer un objet internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
        
'le rend visible
IE.Visible = True
'en plein écran
IE.TheaterMode = True

'ouvre une page...
IE.Navigate "http://www.identifietoi.com"

'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE 
DoEvents
Loop

'Rempli les champs (idUser et mdp sont les NAMES à repéré dans la source de la page web)
IE.Document.all("idUser").Value = "Jeannot" 'textbox...
IE.Document.all("mdp").Value = "motdepasse" 'textbox...

'Valide le formulaire
IE.Document.Forms(0).submit

'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE 
DoEvents
Loop

'Clique sur le lien javascript d'après sont id (dans la source aussi)
IE.Document.Links().namedItem("idlinknewdoc").Click

'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE 
DoEvents
Loop

'Boucle parcourant tous les objets de la page jusqu'à celui que l'on souhaite
For i = 0 To IE.Document.all.Length - 1
'ici on test si c'est le contrôle voulu avec un de ses attributs puis on clique
    If IE.Document.all.Item(i).Value = "Cercar" Then
        If err.Number = 0 Then
            IE.Document.all.Item(i).Click
        Else
            err.Clear
        End If
    End If
Next

'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE 
DoEvents
Loop

Set IE = Nothing

End sub

Conclusion :


N'hésitez pas pour les remarque c'est ma première source :D

A voir également

Ajouter un commentaire

Commentaires

capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Ta une petite erreur , quand tu click sur un bouton tu dois faire cela :

Do While IE.ReadyState <> 3
DoEvents
Loop

Do While IE.ReadyState <> 4
DoEvents
Loop
mzfr
Messages postés
17
Date d'inscription
mercredi 5 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2008
-
Ca ne reviens pas au mème puisque quand readystate=4 c'est que la page est complétement chargée ?
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
3, 4 fichtre !que c'est parlant...

Membres de SHDocVwCtl.tagREADYSTATE :
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_COMPLETE = 4

leur doc ( http://msdn2.microsoft.com/en-us/library/bb268229(VS.85).aspx ) nous dit:
READYSTATE_INTERACTIVE
Object is interactive, but not all of its data is available.
READYSTATE_COMPLETE
Object has received all of its data.

-----------------

a lire également:
http://groups.google.com/group/microsoft.public.inetsdk.programming.dhtml_editing/browse_thread/thread/f54cc97916235519

----------

en somme, je ne comprends pas le bien fondé de ta remarque, Capo666
dhcp
Messages postés
3
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
Propre et élégant!

J'ai un petit souci, sous VBA access le code fonctionne parfait, mais je n'ai pas la complétude des méthodes et propriétés, ni d'aide en ligne sur les objet IE.
Par exemple pour "IE.ReadyState" ReadyState est inconnu de l'aide et quand je tape "IE." l'environnement de dev ne propose aucune méthodes objets ou propriétés.

Merci par avance
capo666
Messages postés
35
Date d'inscription
jeudi 8 septembre 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Observe bien :
Quand tu appelles une URL (avec Navigate), le ReadyState passe par les états suivants :
Uninitialized, Loading, Interactive, Complete
Puis, quand tu cliques sur un bouton, les états sont :
Interactive, Complete

Donc, il te suffit de créer autant de boucle Do-Loop que tu as d'état à voir défiler :
Quand tu appelles l'URL, ce qui t'intéresse, c'est l'état final :
Do While ie.ReadyState <> 4
DoEvents
Loop
Ensuite, tu sais que tu vas cliquer sur un bouton, il faut attendre qu'apparaissent successivement Interactive, puis Complete :
Do While ie.ReadyState <> 3
DoEvents
Loop
Do While ie.ReadyState <> 4
DoEvents
Loop

voila

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.