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

Macros et VBA Excel Discussion :

Connexion à un site avec login [FAQ]


Sujet :

Macros et VBA Excel

  1. #21
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Bravo donc à Caféine qui a apporté la solution

    Je n'ai par ailleurs pas compris à quoi servait la ligne :

    Je l'ai supprimée et ça marche sans (c'est un détail, mais je le dis quand même, au cas ou quelqu'un se poserait la question).

    J'ai ensuite voulu pousser la chose un peu plus loin (je ne peux pas m'empêcher, c'est toujours pareil) en faisant un checkbox sur le meilleur site de développement que l'on connait et son "se souvenir de moi ?"

    J'ai donc essayé plusieurs lignes de code, dont celles-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set DOCelement = IEdoc.getElementsByName("cookieuser").Item 
    'j'ai aussi testé getElementsByName("c").item
    DOCelement.Item.setAttribute "checked", "true"
    'j'ai aussi testé DOCelement.Value = 1
    Mais rien n'y fait.

    Aussi j'ai essayé l'identification en cliquant sur "s'identifier" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set DOCelement = IEdoc.getElementsByName("s").Item
    DOCelement.Click
    Qui est censé correspondre à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="submit" class="button" value="S'identifier" tabindex="104" title="Insérez (...) profil personnel." accesskey="s" /></td>
    En fait ça ne m'étonne pas que ça ne marche pas puisqu'il n'y pas de "Name", mais le "s" du accesskey; et je ne sais pas comment gérer les accesskey
    (si c'est ça qu'il faut utiliser ! car si ça trouve c'est pas du tout ça )

    D'ailleurs pour le "cookieuser" du "se souvenir de moi", il y avait l'accesskey="c" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td class="smallfont" colspan="2" nowrap="nowrap"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Se souvenir de moi ?</label></td>
    autre possibilité, ce n'est pas item mais item(0), item(1) ou item(2) ...
    mais je ne sais pas comment obtenir le numéro des items
    Donc j'y ai été à tâtons, en faisant plusieurs tests, sans réussir.

    Avez-vous la solution pour que l'on puisse gérer au mieux notre connexion à notre site préféré ?

  2. #22
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Chez moi ça fonctionne avec ça:
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        'checkbox "Se souvenir"
         Set DOCelement = IEdoc.getElementsByName("cookieuser").Item(0)
         DOCelement.Checked = True
    A+

  3. #23
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Merci LedZepp, le cochage marche avec ton code, il s'en fallait de peu.

    Il ne reste donc plus que le click sur "s'identifier" à résoudre.

    A noter que j'avais mis que je ne savais pas à quoi la ligne :

    servait.

    J'ai trouvé; elle sert à mettre en surbrillance le "s'identifier" (ce qui n'est pas forcément nécessaire, ça dépend de la méthode choisie).

    Donc je pense qu'il y a deux méthodes pour s'identifier en utilisant la validation par l'item "s'identifier"

    1) le click simple, sur le bon item, sans que DOCelement.Select soit nécessaire

    2) DOCelement.Select, avec ensuite un retour à la ligne.
    en effet j'ai testé, et après le DOCelement.Select, en quittant la macro, en faisant un retour à la ligne (entrée) manuel, on s'identifie.
    mais comment simule t-on un retour à la ligne sur la page courante en VBA ?

  4. #24
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Cette partie du code de Caféine le fait
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        'connexion
         Set DOCelement = IEdoc.Forms(0)
         DOCelement.submit
    Elle ne simule pas le clic à proprement parler, mais elle envoie le formulaire au serveur http en invoquant la méthode submit du formulaire de connexion.

    obtient le premier formulaire de la page html qui se trouve être le formulaire de connexion.

    A+

  5. #25
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Effectivement, la partie du code de Caféine le fait.

    Et je cherche d'autres méthodes
    (pourquoi aller à Rome par un seul chemin si on a le choix entre 3 chemins )

    En cherchant, j'ai trouvé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim IE
    Set IE = Wscript.CreateObject("InternetExplorer.Application")
    IE.Visible = 1 
    IE.navigate "http://www.developpez.net/forums/login.php"
    Do While (IE.Busy)
    	WScript.Sleep 10
    Loop
    Set Helem = IE.document.getElementById("username")
    Helem.Value = "Zeromus"
    Set Helem = IE.document.getElementById("password")
    Helem.Value = "LE_MOT_DE_PASSE A ZEROMUS"
    Set Helem = IE.document.getElementById("login")
    Helem.Click
    mais c'est du VBS, et visiblement le code html de la partie login de developpez a changé puisqu'il faut mettre "navbar_username" à la place de "username" puis "navbar_password" à la place de "password"
    par contre pour le login, ça coince, car y'a plus d'id "login" dans le code html

  6. #26
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Voila comment je trouve le bouton qui n'a ni nom ni id (toujours avec le code de Caféine)
    Je fais une recherche sur la balise html "INPUT"
    Le bouton du formulaire de connexion se caractérise par son type ("submit") et sa valeur ("S'identifier").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Déclaration supplémentaire par rapport au code d'origine
        Dim DOCelts As Object  ' collection d'objets
    ' ....
     
        'connexion
         Set DOCelts = IEdoc.getElementsByTagName("input")
         For Each DOCelement In DOCelts
             If LCase(DOCelement.Type) = "submit" And LCase(DOCelement.Value) = "s'identifier" Then
                DOCelement.Click
                Exit For
             End If
         Next
    Mais je pense que de toutes façons il y aura toujours des différences d'un formulaire à un autre.
    Il faut code au cas par cas en fonction du code html de la page.

    A+

  7. #27
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut


    Merci LedZepp. Tu vois j'aurais eu beau chercher (et dieu sait que j'ai cherché) j'aurais pas trouvé ça !


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Site avec Login et Mot de passe
    Par marionw84 dans le forum Sécurité
    Réponses: 5
    Dernier message: 19/07/2008, 11h04
  2. site avec login
    Par abakobo dans le forum Dynamique
    Réponses: 0
    Dernier message: 09/05/2008, 21h50
  3. Connexion sur site distant avec un client écrit en PERL ??
    Par Cygnus Saint dans le forum Modules
    Réponses: 2
    Dernier message: 07/03/2006, 10h45
  4. Réponses: 3
    Dernier message: 25/11/2005, 13h06

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