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

Python Discussion :

navigation selenium validation [Python 3.X]


Sujet :

Python

  1. #1
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut navigation selenium validation
    Bonjour,
    Mon site bancaire a été complètement modifié et mon ancien code ne fonctionne plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    driver = webdriver.Chrome("/usr/bin/chromedriver")
    driver.get("https://www.credit-agricole.fr/ca-morbihan/particulier/acceder-a-mes-comptes.html?resource=%2Fca-morbihan%2Fparticulier%2Foperations%2Fsynthese.html")
     
    elem1 = driver.find_element_by_name("CCPTE")
    #elem1 = driver.find_element_by_id("Login-account")
     
    elem1.send_keys(ch1)
     
    driver.find_element_by_id("validation").click()
    Je suis bloqué au moment de valider mon numéro de compte. Si qqn a le temps de me débloquer...
    Voici l'adresse du site :
    https://www.credit-agricole.fr/ca-mo...Fsynthese.html

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je me réponds tout seul même si je doute que cela intéresse qqn, vu le peu de réponses obtenues...
    J'ai réussi avec un xpath contains text.

  3. #3
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Bon, j'ai à nouveau un pb sur le code.
    Si qqn est motivé pour jeter un oeil, j'ai un problème étrange.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Je ne suis pas sûr de comprendre ce que tu veux faire...

    Dans la page il y a bien un input avec l'id "Login-account" mais ça c'est juste pour entrer ton identifiant...
    Une fois que tu as entré l'identifiant un bouton "Entrer mon code personnel' apparait et il faut cliquer sur ce bouton pour qu'un input dans lequel il faut entrer le code personnel apparaisse...

    Ton code ne fait pas cela car tu cliques directement sur le bouton "validation", il te manque juste une étape...

    Je n'ai pas de compte donc je ne peut pas tester entièrement... Mais si tu as tout ce qu'il faut eh bien tu peux tester en ajoutant l'étape en question...

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Merci.
    Voici mon code, il est testable même sans avoir de compte :
    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
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import time
    from selenium import webdriver
     
    driver = webdriver.Chrome("/usr/bin/chromedriver")
    driver.get("https://www.credit-agricole.fr/ca-morbihan/particulier/acceder-a-mes-comptes.html?resource=%2Fca-morbihan%2Fparticulier%2Foperations%2Fsynthese.html")
     
    elem1 = driver.find_element_by_name("CCPTE")
     
    elem1.send_keys("98765432101")
     
    driver.find_element_by_xpath("//*[contains(text(),'Entrer mon code personnel')]").click()
     
    liste_c=[]
     
    src = driver.find_elements_by_xpath("//a[@class='Login-key T031__key']")
     
    cases = []
    for i,el in enumerate(src):
        print(i, "->", el.text)
        cases.append(el.text)
    print(cases)
    Etrangement, je ne parviens à récupérer que 3,4 ou 5 chiffres du pavé (parfois, comme ici, la liste ne correspond pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    0 -> 
    1 -> 
    2 -> 
    3 -> 
    4 -> 
    5 -> 
    6 -> 
    7 -> 7
    8 -> 6
    9 -> 3
    ['', '', '', '', '', '', '8', '7', '6', '3']

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Ok je vais tester...

    Sinon pour le bouton "Entrer mon code personnel' il vaut mieux utiliser son id (qui est "Login-account") plutôt que name...

    Citation Envoyé par marco056 Voir le message
    Etrangement, je ne parviens à récupérer que 3,4 ou 5 chiffres du pavé (parfois, comme ici, la liste ne correspond pas) :
    Mais pourquoi veux-tu faire cela ? Est-ce pour entrer le code en cliquant sur les bons chiffres ?

    Cela me semble compliqué, il serait plus simple d'entrer directement ton code dans le input...

    Dis-moi si c'est bien cela que tu veux...

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Je repasse...

    Citation Envoyé par Beginner. Voir le message
    Mais pourquoi veux-tu faire cela ? Est-ce pour entrer le code en cliquant sur les bons chiffres ?

    Cela me semble compliqué, il serait plus simple d'entrer directement ton code dans le input...
    Finalement on ne peut apparemment pas entrer directement le code dans le input (quand on le fait de cette manière le bouton de validation ne fonctionne pas, il reste désactivé), il faut donc passer par le pavé numérique, c'est-à-dire entrer le code en cliquant sur les bons chiffres... Ce qui est plus compliqué car l'emplacement des chiffres change à chaque fois qu'on charge la page, ce qui est normal puisque c'est une sécurité...

    Du coup je comprends pourquoi tu voulais récupérer l'emplacement des 10 chiffres...


    J'ai testé ce code qui fonctionne chez moi :

    Code python : 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
    import time
    from selenium import webdriver
     
    driver = webdriver.Chrome()
    # driver = webdriver.Firefox()
    driver.get("https://www.credit-agricole.fr/ca-morbihan/particulier/acceder-a-mes-comptes.html?resource=%2Fca-morbihan%2Fparticulier%2Foperations%2Fsynthese.html")
     
    # elem1 = driver.find_element_by_name("CCPTE")
    elem1 = driver.find_element_by_id("Login-account")  # id= "Login-account"
    elem1.send_keys("12345678901") # exemple d'identifiant....
     
    driver.find_element_by_css_selector("button.btn.btn-primary.col-xs-12.Login-button").click()
     
    # pave = driver.find_elements_by_xpath("//a[@class='Login-key T031__key']")
    pave = driver.find_elements_by_css_selector('a.Login-key.T031__key')
     
    time.sleep(1)  # on peut faire mieux avec waits...
    cases = {}
    for i, elem in enumerate(pave):
        cases[elem.text] = pave[i]
        print(elem.text, "-->", i)
     
     
    codePerso = "371956"  # c'est un exemple de code (à 6 chiffres) à entrer...
    for chiffre in codePerso:
        cases[chiffre].click()    
        time.sleep(0.3)  # pas toujours nécessaire...
     
    time.sleep(10) # juste pour les tests...
    driver.find_element_by_id("validation").click()  # id= "validationt"

  8. #8
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Cool
    Il me manquait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pave = driver.find_elements_by_css_selector('a.Login-key.T031__key')
    Pour le pave, j'étais passé avec une liste et non un dictionnaire mais c'est mieux ainsi.
    Merci Beginner.

    [Edit] En fait, ma méthode fonctionnait : il suffisait de mettre time.sleep !

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ouais effectivement j'avais aussi remarqué qu'il fallait ajouté le time.sleep pour que ton code fonctionne...

    J'ai préféré quand même utiliser find_elements_by_css_selector plutôt que find_elements_by_xpath car un chemin est plus susceptible de changer qu'un selecteur CSS...

  10. #10
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Oui, je comprends et je t'en remercie.
    Pour le time.sleep, j'aurais pu m'en douter car je parvenais à récupérer certaines valeurs et pas d'autres...

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

Discussions similaires

  1. [Expert]C# selenium "Element is no longer valid"
    Par shadowmoon dans le forum Développement Web avec .NET
    Réponses: 10
    Dernier message: 14/09/2017, 11h04
  2. Double validation de congés et la navigation entre les états
    Par AmFaye2 dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 04/11/2016, 16h47
  3. Bouton de navigation
    Par thierry sache dans le forum Flash
    Réponses: 2
    Dernier message: 17/12/2002, 11h43
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

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