IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Remplir un FORM dans une page html


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut Remplir un FORM dans une page html
    Je souhaite créer un programme qui remplira automatiquement des champs "input" de formulaires d'une page html.

    Je pense que ce qui sera le moins "couteux" sera d'utiliser le composant MSHTML. Je vais me débrouiller pour naviguer dans l'objet documenthtml pour retrouver les champs input qui m'intéressent, mais je ne sais pas comment les remplir, puis provoquer l'action "post".

    Merci a qui voudra bien me conseiller (je n'arrive à rien dans la documentation µ$).

    AMIcalement.

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    Tout dépend de quelle doc tu te sers : c'est celle de javascript et des objects DOM qu'il faut utiliser
    qui est fournie par exemple avec Microsoft Script Editor (livré entre autre avec Frontpage ou Office 2003 : voir pièce jointe MSE10.chm)

    Pour les affectations, voir la propriété “value” des controles, et form.submit() pour provoquer l'envoi.
    Fichiers attachés Fichiers attachés

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut(s)

    @L'AMI Yves, Un tutoriel qui pourrait t' intéresser VBA Internet Explorer, bien que VBA, il est très facile d'adapter au VB6.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut
    Merci les gars. Avec ça, je vais pouvoir avancer.

    AMIcalement.

  5. #5
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut
    Eh bien en fait, je galère comme un âne ! Oui, le tutoriel IE dans VBA est très bien, mais je n'arrive pas à naviguer proprement dans l'arborescence du document. Je me rappelle avoir jadis joué avec ça, mais je ne sais plus où retrouver tout ça (changement de version de Windows, d'ordinateur, tout ça quoi, tout le monde connait). Le MSE10.chm ne m'aide pas à retrouver les informations sur le modèle DOM (il me semble que c'est comme ça qu'il s'appelle). J'ai un peu interrogé mon ami Google, mais il n'a pas (encore !) répondu. J'y retourne immédiatement.

    Je vous teins au courant.

  6. #6
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut
    Mais comment font les gens qui veulent exploiter le modèle DOM, pour naviguer dans le "document" fourni par WebBrowser : je ne sais pas où trouver la doc !

    On arrive parfois à en trouver des petits bouts (explorateur de projet, par exemple, mais on sait juste ce qui existe).

    J'ai découvert qu'on pouvait avoir la liste des ChildNodes. Super. Mais comment faire pour exploiter le premier ? TagName ? Ca semble pas mal, mais il y en a qui n'ont pas de TagName ! Dans ce cas, il faut regarder NodeName. Mais ça ne marche pas toujours...

    Je pense qu'il y a par ici de vrais programmeurs : peuvent-ils me dire ce qu'auraient pensé leurs chefs s'ils avaient développé comme ça ! Internet Explorer, ça doit être un de ces paquets de spaghettis !

    Enfin, si quelqu'un pouvait m'aider à y voir clair : pour le moment, je bois la tasse.

    AMIcalement.

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    La moindre des choses c'est déjà de lire les tutoriels
    ou plus simplement de commencer par faire une recherche sur ce forum :
    «html+document» retourne suffisamment de réponses pour que tu puisses travailler.

  8. #8
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut
    Ecoute, DarkVader, je me sens merdeux, de recevoir une réponse comme ça. Par ce que j'en ai fait, des recherches. A te lire, je me dis que je ne sais pas chercher, que je suis passé à côté de l'essentiel et tout ça.

    Mais sur ce forum, ta recherche ne donne AUCUNE réponse. Il n'y a que "htm document" qui donne 42 réponses. Je viens de les parcourir, elles ne m'apportent rien.

    Dans une précédente réponse, quelqu'un a donné un lien vers des tutoriels... Je ne prétends pas tout savoir, ni tout bien faire en VB6, mais en tout cas, là n'est pas mon problème.

    Au stade actuel, je sais lancer WebBrowser sur mon URL, et, par exemple, afficher la liste des TagName de tous les items de la liste renvoyée par Document.all.

    Là où je coince, c'est quand il s'agit de naviguer vraiment dans l'arborescence des objets : j'ai besoin d'une description précise des tous les objets qui peuvent exister dans Document, et, pour chacun, des propriétés qui existent obligatoirement, facultativement ou jamais.

    Mon but est de repérer les Input du Form qui m'intéresse, même s'il y a d'autres Form dans la page, et même si la page change (sur ce dernier point, j'ai de bonnes chances d'être déçu un jour, mais au moins, que ce soit le plus tard possible).

    Si tu sais où trouver l'information nécessaire, merci de me le dire, ou du moins, de m'expliquer pourquoi je n'ai pas su la trouver.

    AMIcalement.

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    Je souhaite que le code qui suit pourra te donner des pistes.
    Sur un Form, 2 CommandButtons et 1 TextBox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
     
    Dim IE As InternetExplorer 'nécessite d'activer la référence Microsoft Internet Controls
    Dim Helem As IHTMLElementCollection 'nécessite d'activer la référence Microsoft HTML Objects Library
    Dim AdrsUrl As String
    Dim Msg As String
    Dim Fini As Long
    Private Sub Form_Load()
    Command1.Move 60, 120, 1815, 375
    Command1.Caption = "Récupérer les Inputs"
    Command2.Move 2040, 120, 2715, 375
    Command2.Caption = "Go recherche ''Brouette''": Command2.Enabled = False
    Text1.Move 60, 540, 8295, 4635
    Text1.Text = ""
    'Text1.MultiLine = True ' ******** A faire en design ***********
    'Text1.ScrollBars = 3 '   ******** A faire en design ***********
    Me.Move 0, 0, 8685, 5820
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    If TypeName(IE) <> "Nothing" Then Set IE = Nothing
    End Sub
     
    Private Sub Command1_Click()
    Dim T As Long
     
    AdrsUrl = "http://thyez.e-bricodrive.fr/index.php"
    Text1.Text = "En cours de connexion ...../"
    Set IE = New InternetExplorer
    Fini = Timer + 10
    IE.Navigate AdrsUrl
    Do While IE.ReadyState <> READYSTATE_COMPLETE
         DoEvents
         If Timer > Fini Then Me.Caption = "Délais dépassé": Exit Do
         If Text1.Text = "En cours de connexion ...../" Then Text1.Text = "En cours de connexion .....\" Else Text1.Text = "En cours de connexion ...../"
    Loop
    If Me.Caption = "Délais dépassé" Then
        Set IE = Nothing
        MsgBox "Impossible de ce connecter", vbInformation, "Délais dépassé"
        Exit Sub
    End If
     
    Set Helem = IE.Document.getElementsByTagName("input")
    'boucle pour lister les objets type "input" de la page
    'afin d'identifier les champs, les objets Input peuvent être des TextBox ou des boutons
    Text1.Text = "Récupération de Inputs .....": Msg = ""
    For T = 0 To Helem.length - 1
        Msg = Msg & "Élément N°" & CStr(T) & _
                " | Nom: " & Helem(T).getAttribute("name") & _
                " | Id: " & Helem(T).getAttribute("id") & _
                " | Valeur: " & Helem(T).getAttribute("value")
        If T <> Helem.length - 1 Then Msg = Msg & vbNewLine
    Next T
    IE.Visible = True
    Text1.Text = Msg
    Command2.Enabled = True
    Me.SetFocus
    End Sub
     
    Private Sub Command2_Click()
    'je sais maintenant les noms et/ou les Ids des éléments Input de la page visité
    'j'utilise ses informations pour rechercher des brouettes chez ce fournisseur
    Msg = "Brouette"
    Helem("searchString").innerText = Msg ' je remplis la boite "Trouver un produit..."
    Helem("searchStringOk").Click ' je clique sur le bouton "Ok"
    DoEvents
    'j'ai récupéré l'adresse suite a la réponse donné à la requête
    AdrsUrl = "http://thyez.e-bricodrive.fr/produitListe.php?searchString=" & Msg & "&order=PERTINENCE&ok.x=0&ok.y=0"
    Fini = Timer + 10
    'boucle en attente d'actualisation de la page suivant la requête
    Do While IE.LocationURL <> AdrsUrl
         DoEvents
         If Timer > Fini Then Me.Caption = "Délais dépassé": Exit Do
    Loop
    If IE.LocationURL <> AdrsUrl Then MsgBox "Problème ?", vbInformation, "Délais dépassé"
    'IE.Quit: Set IE = Nothing
    End Sub
    Sous IE pour avoir des informations sur un élément de la page, tu peux faire F12 pour ouvrir l’outil de développement.
    Dans son menu Rechercher ---> Sélectionné l’élément par clic puis se placer sur l'élément et cliquer.
    Le curseur, dans la fenêtre HTML se place sur la ligne décrivant l'élément.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 512
    Points : 131
    Points
    131
    Par défaut
    Salut ProgElect, et merci de ta réponse.

    Pour te dire ce que j'ai compris dans ce qui se passe, je dirais que si je voulais faire la même chose que dans le tutoriel VBA que tu m'as indiqué il y a quelques jours, je n'aurais pas trop de problèmes : je repère dans document.all les numéros de champs que je veux remplir, ainsi que le numéro du formulaire en question, puis je remplis les champs, puis je soumets le formulaire, et, à des détails cosmétiques près, ça doit marcher.

    Ce que tu fais dans ta recherche de brouette (si j'ai bien compris, j'ai lu vite), c'est d'extraire les champs "input" et d'afficher dans ta combobox à quoi ils ressemblent, puis, à la main, tu cliques dans l'item de la combobox celui où tu veux écrire "brouette" et tu l'envoies.

    Ce que je voudrais faire est un peu un mélange des deux : je cherche à faire un programme qui soir raisonnablement capable d'identifier par lui-même les champs input recherchés, même si la façon de générer la page web évolue, puis les remplis et soumet le formulaire (à la limite, on n'a m^mee pas besoin de visualiser la page).

    Pour faire ça, j'ai besoin de pouvoir identifier assez précisément les éléments renvoyés par une propriété comme ChildNodes (ou une autre), en navigant dans cette liste et en décryptant les tags, ou les ids, ou les names, ainsi que les parties de texte qui sont autours.

    Aux dernières nouvelles, j'ai un programme qui navigue dans ChildNodes (en testant err.number à chaque pas !), et qui s'appelle récursivement sur chaque item renvoyé pour lequel childnodes a une longueur non nulle : eh bien la récursion ne marche pas : je suis en train de chercher à comprendre pourquoi.

    Mais je suis absolument ébahi du manque de cohérence (par rapport à ma propre compréhension de la cohérence) de la façon dont le code HTML est analysé par les programmeurs µ$, et transformé en objets dans "Document", et également par l'apparente impossibilité de trouver un document décrivant le contenu de Document, qui semble en accord avec ce que j'arrive à observer en bidouillant dans mon code. Je ne sais pas, moi, mais, franchement, un webbrowser.chm, ça serait difficile à faire, pour Microsoft ? Ce que je trouve sur MSDN, c'est n'importe quoi : la navigation est extraordinairement lourde, et il n'y a pas 10% de ce que je trouve en pratique. L'explorateur d'objets dit ce qui existe (c'est déjà bien mieux que MSDN), mais il manque le typage et la fonction.

    N'es-tu pas d'accord ?

    AMIcalement.

Discussions similaires

  1. Remplir des input de type text dans une page HTML
    Par Rodrick dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/06/2007, 11h19
  2. [HTML]Inserer un *.swf dans une page html
    Par [Silk] dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/06/2005, 12h23
  3. Insérer du XML dans une page HTML
    Par Shaman LizardKing dans le forum XML/XSL et SOAP
    Réponses: 14
    Dernier message: 04/05/2005, 07h27
  4. Réponses: 6
    Dernier message: 14/12/2004, 02h47
  5. [Applet] Ouvrir une applet dans une page HTML
    Par debutant java dans le forum Applets
    Réponses: 4
    Dernier message: 04/06/2004, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo