Controler le webbrowser et identifier les liens par leur numero d'item

Soyez le premier à donner votre avis sur cette source.

Vue 7 691 fois - Téléchargée 626 fois

Description

Ce petit code source fait avec visual basic 2008 est en premier lieu un bon rappel de comment controler le webbrowser : remplir les champs et appuyer sur un bouton ou un lien. Ensuite il permet d'identifier rapidement les lien/bouton par leur Tagname, leur id, leur name ou si il manque tout leur numero d'item. Enfin il met le lien en rouge por bien le visualiser sur la page web. Tout est bien expliquer dans la source et je réponds aux questions

Source / Exemple :


Public Class Form1
    Inherits System.Windows.Forms.Form
    'i pointera le numero de l'item
    Dim i As Integer = 0
    'collec recevra l'ensemble des htmlelement du document
    Dim collec As HtmlElementCollection

    Private Sub WebBrowser1_DocumentCompleted(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        'collec recoit les htmlelement de la page web à la fin du chargement de celle ci
        collec = WebBrowser1.Document.All
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'correspond au bouton go : on lance la navigation du webbrowser avec l'adresse situé dans textbox1
        WebBrowser1.Navigate(TextBox1.Text)
    End Sub

    Private Sub remplirlestextbox()
        'cette procedure rempli les différents champs avec les principal propriété du htmlelement pointé
        Dim element As HtmlElement
        element = collec.Item(i)
        'son id le fichier pourra etre accéder par getelementbyid
        TextBox3.Text = element.Id
        'son Name le fichier pourra etre accéder par getelementbyname
        TextBox5.Text = element.Name
        'son TagName le fichier pourra etre accéder par getelementbyTagname
        TextBox7.Text = element.TagName
        'son numero d'item (à la brutal ;-) pourra etre accéder par All.item(i)
        TextBox4.Text = i
        'l adresse associée pour les lien html : on peut recuperer ainsi src.....
        TextBox6.Text = element.GetAttribute("href")
        'on le met en rouge sur l'ecran pour l'identifier facilement
        WebBrowser1.Document.DomDocument.All.Item(i).style.backgroundcolor = "red"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'le bouton suivant
        'on remet le lien en blanc : j'ai pas réussi a le remettre comme initial : avis aux amateurs je susi preneur
        WebBrowser1.Document.DomDocument.All.Item(i).style.backgroundcolor = "white"
        'on diminu i sauf si on est au debut
        If i = 0 Then i = collec.Count - 1 Else i = i - 1
        remplirlestextbox()
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'le bouton précédent
        'idem
        WebBrowser1.Document.DomDocument.All.Item(i).style.backgroundcolor = "white"
        'l'inverse
        If i = collec.Count - 1 Then i = 0 Else i = i + 1
        remplirlestextbox()
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        WebBrowser1.Document.DomDocument.All.Item(i).Value = TextBox2.Text
        'l'instruction qu'il va falloir recopier dans votre code pour remplir le textbox (en remplacant evidemment i par le numero
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        WebBrowser1.Document.All.Item(i).InvokeMember("click")
        'l'instruction qu'il va falloir recopier dans votre code pour cliquer (en remplacant evidemment i par le numero
        i = 0
    End Sub

End Class

Conclusion :


Une petite aide trés utile pour automatiser la navigation

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

blq
Messages postés
98
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Je suis tombé par hasard sur ce code qui m'a rendu service. Ce n'est a très compliqué à comprendre et il y a des commentaires, donc accessible à tous.
J'ai joué un peu avec le code pour approfondir mes connaissances et j'ai ajouté ce petit bouton et quelques lignes de code, juste pour rechercher un champ de saisie (sur Name) dont je connais l'identifiant pour faciliter l'insertion automatique.

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim ct As Integer
Dim theItem As HtmlElement

' Test si recherche prossible
If Not collec Is Nothing And Len(Trim$(TextBox5.Text)) > 0 Then
' Déselection suite à une recherche précédente
If i <> -1 Then WebBrowser1.Document.DomDocument.All.Item(i).style.backgroundcolor = "white"

i = -1

' Boucle sur la recherche du champde saisie
For ct = 0 To collec.Count - 1
theItem = collec.Item(ct)

If UCase$(TextBox5.Text) = UCase$(theItem.Name) Then
' Appel de la fonction qui sélectionne le champs
i = ct
Call remplirlestextbox()
End If
Next
End If
End Sub
mafieulemouton
Messages postés
24
Date d'inscription
lundi 30 juin 2008
Statut
Membre
Dernière intervention
26 janvier 2010
-
Ça marche impeccablement, c'est bien commenté.
j'enlève juste un point pour les controls qui n'ont pas été nommés proprement
(button1, button2... pas terrible pour la lisibilité)
ritshina_lilas
Messages postés
8
Date d'inscription
jeudi 21 juin 2007
Statut
Membre
Dernière intervention
31 mai 2010
-
super ce code, c'est exactement ce que je cherchais pour commencer mon application
Je suis encore débutante mais avec les commentaires j'ai pu l'appliquer à mon code.

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.