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 :

Interagir avec un autre navigateur que IE en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Interagir avec un autre navigateur que IE en VBA
    bonjour,
    J'utilise depuis 10 ans sur ce très bon tuto pour pouvoir interagir avec des pages web en VBA :
    https://qwazerty.developpez.com/tuto...-et-vba-excel/
    Mais ce tuto s'appuie uniquement sur une interaction avec un objet basé sur Internet Explorer
    Or, avec le temps, de plus en plus de sites web ne fonctionnent plus sur ce navigateur devenu obsolète.
    Par exemple le site d'AXA https://connect.axa.fr
    Existe-t-il des objets VBA permettant de manipuler d'autres navigateurs comme Chrome ou Firefox ?

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 224
    Par défaut
    hello,
    tu peux essayer d'utiliser selenium basic

    Ami calmant, J.P

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Merci pour le tuyau.
    J'ai regardé et ça promet une solution à mon problème mais
    - je n'arrive pas à utiliser avec Firefox. Quand je mets une instruction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim robot As New WebDriver
    robot.Start "firefox", "https://www.google.fr"
    Firefox s'ouvre mais n'affiche pas la page Google et au bout de quelques secondes une erreur s'affiche
    Firefox failed to open the listening port 127.0.0.1
    J'ai trouvé plusieurs témoignages similaires sur internet mais aucune solution

    - sur chrome je n'ai pas trouvé la solution pour saisir un mot de passe sur un site avec clavier virtuel
    Sur ces sites, il y a un champ destiné à recevoir le mot de passe que l'on remplit en cliquant sur les chiffres du clavier virtuel. Avec IE, j'arrivais à dire à ce champ de prendre la valeur attendue, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim IE As New InternetExplorer
    Dim IHTMLcollection As IHTMLElementCollection
    Dim InputTxtBox As HTMLInputElement
    Dim IEDoc As HTMLDocument
    IE.navigate "https://connect.axa.fr/#/"
    Set IEDoc = IE.document
    Set IHTMLcollection = IEDoc.getElementsByName("inputPassword")
    Set InputTxtBox = IHTMLcollection(0)
    InputTxtBox.Value = "mon-mot-de-passe"  'combinaison de chiffres
    NOTA : le code ci-dessous ne marche plus aujourd'hui parce que AXA ne fonctionne plus avec IE, mais avant, ce code marchait. J'ai mis ce code pour exemple mais vous pouvez le tester avec n'importe quel site avec clavier virtuel qui continue d'accepter IE.

    Avec Selenium, j'ai tenté le code suivant mais visiblement la commande SendKeys ne "remplit" pas le champ mot de passe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim robot As New WebDriver
        Dim mdp As Object
     
        robot.Timeouts.ImplicitWait = 8000
        robot.Start "chrome", "https://connect.axa.fr/#/"
        robot.Get "/"
     
        ' Mot de passe
        Set mdp = robot.FindElementById("inputPassword")
        'mdp.Clear - l'instruction provoque un bogue ici
        mdp.SendKeys "mon-mot-de-passe"  'combinaison de chiffres
    Y a-t-il d'autres possibilités que SendKeys pour ce type de champ ? C'est bizarre que l'on puisse interagir avec ce champ dans IE et pas dans Firefox ou chrome

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 224
    Par défaut
    hello,
    en ce qui concerne Firefox cela ne m'étonne pas trop car cela fait 6 ans que SeleniumBasic n'a pas été mis à jour et il y a alors bien un moment il ne fonctionnera plus avec les nouvelles versions des navigateurs et des webdrivers.
    Pour l'autre problème tu peux essayer d'exécuter du javascript pour remplir le champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set MdP = robot.FindElementByName("inputPassword")
    robot.ExecuteScript "arguments[0].value='123456'", MdP
    Ami calmant, J.P

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Bonjour
    Ce code a pour effet de remplir en effet (en tout cas visuellement) le champ "code confidentiel" avec des points (caractères masqués)
    Mais si je clique sur le bouton "Me connecter" pour valider login et mot de passe, il s'affiche la mention "champ obligatoire" sous le champ "code confidentiel".
    En résumé, tout se passe comme si le site n'avait pas associé le mot de passe au champ destiné à le recevoir.

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 224
    Par défaut
    hello,
    ce que tu peux essayer de faire c'est de cliquer le premier bouton du clavier visuel pour initialiser le champ puis d'exécuter le javascript -> la touche tapée dans le champ sera remplacée par ce qui est envoyé par le javascript.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim bouton As Object   
    Set bouton = robot.FindElementByXPath("//button[@class='virtual-keyboard-v2--button ng-scope']")
    bouton.Click
    Ami calmant, J.P

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

Discussions similaires

  1. [WM24] Forcer champ HTML avec un autre navigateur que le natif
    Par tintin85 dans le forum Windev Mobile
    Réponses: 0
    Dernier message: 02/05/2020, 21h10
  2. [OL-365] [URL] Ouvrir les liens avec un autre navigateur que celui par défaut
    Par upltu dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 16/01/2020, 09h29
  3. Interagir avec d'autre fenetres
    Par Amybond dans le forum Windows
    Réponses: 3
    Dernier message: 27/08/2007, 21h29
  4. Lancer Weblogic avec un autre utilisateur que weblo
    Par ujoodha dans le forum Weblogic
    Réponses: 3
    Dernier message: 08/06/2007, 15h09
  5. Injection avec une autre méthode que le setter.
    Par Tiaps dans le forum Spring
    Réponses: 2
    Dernier message: 22/05/2007, 23h37

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