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.NET Discussion :

Connexion automatique site web


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut Connexion automatique site web
    Bonjour à tous !
    Je tente depuis quelques jours de me connecter automatiquement à un site mais en vain ... J'ai pourtant récupéré plusieurs codes. Je vous montre déjà le code HTML du site en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="user" tabindex="1" class="login-input" id="user" type="text" value="">
    Je dois donc mettre mon nom d'utilisateur dans la textbox qui contient l'information "value".
    Voici mon code visual basic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WebBrowser1.Navigate("Adresse du site")
            If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then 'Attendre que la page soit complète
                WebBrowser1.Document.GetElementById("user").SetAttribute("value", "Nom d'utilisateur")
                WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "Mot de passe")
            End If
    J'en ai récupéré un deuxième :
    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
     
    WebBrowser1.Navigate("Adresse du site")
    If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
                Dim theElementCollection As HtmlElementCollection
                theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
                For Each curElement As HtmlElement In theElementCollection
                    Dim controlName As String = curElement.GetAttribute("name").ToString
                    If controlName = "user" Then
                        curElement.SetAttribute("Value", "Nom d'utilisateur")
                    ElseIf controlName = "pass" Then
                        curElement.SetAttribute("Value", "Mot de passe")
                    End If
                Next
                theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
                       End If
    Je ne comprends pas pourquoi rien ne s'écrit, j'ai pourtant bien mis l'ID dans le premier code.

    J'ai essayé aussi sur un autre site mais il n'y a pas le champ "value" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="input_username" name="username" id="username" autofocus="autofocus" autocomplete="off" tabindex="1" data-validation="[NOTEMPTY, >=6]" data-validation-message="Username must contain more than 6 characters. No spaces." type="text">
    PS: Je préfère travailler sur le premier code si possible que je trouve beaucoup plus simple.
    Merci de votre aide !

  2. #2
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    Tu peux utiliser Watin c'est très efficace pour ton cas

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then 'Attendre que la page soit complète
    Le test sur la propriété n'attends pas que le WebBrowser ait terminé de charger la page. Si le browser est toujours en train de charger (ce qui est plus que probable), ça ne fonctionnera pas.
    Tu peux déjà tenter de placer ton code dans l'event WebBrowser.DocumentCompleted.

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Merci à tous les deux, ça fonctionne maintenant c'était bien parce que le browser était toujours en train de charger ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
     
            If WebBrowser1.Url.ToString.Contains("Adresse du site (page login)") And WebBrowser1.DocumentText.Contains("recaptcha") Then 'Si jamais on est sur la page de login et qu'il y a un captcha
                WebBrowser1.Document.GetElementById("user").SetAttribute("value", "Nom d'utilisateur")
                WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "Mot de passe")
    ' On ne click pas automatiquement car il y a un captcha
            ElseIf WebBrowser1.Url.ToString.Contains("Adresse du site (page login)") Then 'Si jamais on est sur la page de login et qu'il n'y a pas de captcha
                WebBrowser1.Document.GetElementById("user").SetAttribute("value", "Nom d'utilisateur")
                WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "Mot de passe")
                WebBrowser1.Document.GetElementById("Submit1").InvokeMember("click") 'On click automatiquement car il n'y a pas de captcha
            End If
        End Sub
    Juste une petite dernière question, est-ce possible qu'un élément nait pas d'ID ? Car le code d'un bouton pour une autre page est celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input class="btn-blue" value="login now" tabindex="4" type="submit">
    Je ne peux donc pas procéder comme le site précédent.
    Merci.

  5. #5
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonsoir Cl3b3r,

    Class, Value, Tabindex et type sont des attributs donc un truc du genre devrait faire l'affaire :

    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
     
     Dim Submits As New List(Of HtmlElement)
            For Each a In WebBrowser1.Document.GetElementsByTagName("input")
                'A toi de prévoir des conditionnelles sur les valeurs d'attributs sinon ça risque de retourner des erreurs !!!!!
                Dim a_class$ = a.GetAttribute("class")
                Dim a_value$ = a.GetAttribute("value")
                Dim a_tabindex$ = a.GetAttribute("tabindex") 
     
                If (a_class = "btn-blue") andalso (a_value = "login now") andalso (a_tabindex = "4") Then
                    Submits.Add(a)
                End If
            Next
     If not Submit_List(0) is nothing
         Submits(0).InvokeMember("click")
     End f
    Je n'ai rien testé de mon côté, c'est purement hypothétique car perso je n'utilise jamais de Webbrowser pour travailler avec des sites......


    A+

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 412
    Par défaut
    Salut wallace1,
    Je n'arrive pas à utiliser (et à comprendre) le fonctionnement du code que tu m'a passé , pourrais-je avoir des explications ?
    Merci

  7. #7
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par CLeBeR Voir le message
    Salut wallace1,
    Je n'arrive pas à utiliser (et à comprendre) le fonctionnement du code que tu m'a passé , pourrais-je avoir des explications ?
    Merci
    Le but ce n'est pas de te donner un code fonctionnel car sans le code complet html de ton site je ne peux absolument rien te garantir !
    L'idée c'est de parcourir tous les attributs (par nom) d'une balise contenant le tagname : Input, ainsi tu n'as pas forcément besoin d'ID !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connexion à un site web via vb form
    Par Lyim3 dans le forum VB.NET
    Réponses: 0
    Dernier message: 06/11/2009, 15h41
  2. Réponses: 5
    Dernier message: 21/03/2009, 17h33
  3. connexion/deconnexion site web - variable SESSION
    Par ju0123456789 dans le forum Langage
    Réponses: 22
    Dernier message: 21/11/2008, 14h32
  4. Réponses: 1
    Dernier message: 12/06/2007, 09h30
  5. Actualisation automatique site web
    Par Sparco dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/01/2007, 20h08

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