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 :

selenium valeur envoi [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 selenium valeur envoi
    Bonjour,
    J'ai un programme qui ne fonctionne plus suite à un changement de la page web.
    Je dois modifier une valeur de liste déroulante.
    Voici le contenu en gros de la page :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form name="frmListe" action="....."
          <div id="btable_btable_numero_caption" class="col-sm-8"></div>
          <div id="btable_btable_numero_length" class="col-sm-4">
              <div id="btable_btable_numero_length" class="dataTables_length">
             <label>
                 Afficher
                 <select class="form-control input-sm" name="btable_numero_length" aria-controls="btable_numero"> event
                    <option value="25">25</option>  
                    <option value="50">50</option>
                    <option value="-1">Tout</option>
    ......
    .....
         </div>
    J'ai effectué pas mal de tentatives dont celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        elem = driver.find_element_by_id("//a[contains(text(), 'btable_btable')]")
        print(elem)
    #    elem.send_keys("-1")
        elem = driver.find_element_by_class("//a[contains(text(), 'form-control')]")
        elem.send_keys("-1")
        driver.find_element_by_xpath("//a[contains(text(), 'Rechercher')]").click()
    Si qqn peut m'aider...

  2. #2
    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 connais pas bien la syntaxe de selenium (j'ai plus de facilité avec JS) mais une chose me turlupine : es-tu sûr qu'on peut passer en argument ceci "//a[contains(text(), 'btable_btable')]" à la fonction find_element_by_id ?

    Cela me semble étrange, le "a" cela correspond à la balise <a>, cela n'a pas de sens pour un id ou j'ai mal compris ?

    Même genre de remarque pour la fonction find_element_by_class...

    Je n'ai pas trouvé de documentation détaillée qui explique cette syntaxe mais ce genre d'argument je le vois plus souvent avec la fonction find_element_by_xpath...

    Citation Envoyé par marco056 Voir le message
    Je dois modifier une valeur de liste déroulante.
    C'est-à-dire ? Tu parles de l'attribut "value" des options ("25","50" et "-1") ? Ou bien du texte contenu dans les balises option ("25","50" et "Tout") ?

    Ou bien tu veux sélectionner une des options ?

  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
    Oui, je crois que tu as raison au niveau du a.
    Pour la liste, oui je veux sélectionner une option, la dernière, c'est-à-dire "-1" qui correspond à "Tout".

  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
    Citation Envoyé par marco056 Voir le message
    Pour la liste, oui je veux sélectionner une option, la dernière, c'est-à-dire "-1" qui correspond à "Tout".
    Essaye ça :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    import time
     
    url = "..."
    # driver = webdriver.Firefox()
    driver = webdriver.Chrome()
    driver.get(url)
     
    time.sleep(1) # pas obligatoire...
    select = Select(driver.find_element_by_css_selector("select.form-control.input-sm[name='btable_numero_length']"))
    select.select_by_value("-1") # ou select.select_by_visible_text("Tout")

    Là j'utilise un sélecteur CSS qui prend en compte le tagName, les deux classes et l'attribut name...
    Cela devrait suffire mais je ne peux pas être sûr puisque je ne peux pas tester...

    Mais si ce sélecteur n'est pas assez précis pour sélectionner le bon élément alors on pourra encore utiliser la div parent ayant pour id ceci "btable_btable_numero_length"...

    EDIT : le code HTML n'est pas correcte car l'identifiant "btable_btable_numero_length" est utilisé deux fois...

  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
    Je suis bête : numero est un nombre qui varie à chaque connexion, j'ai l'impression.
    [edit] il se passe des choses, je reviens pour donner des nouvelles. Merci !

  6. #6
    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 à toi Beginner. J'ai réussi à finaliser mon programme.

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

Discussions similaires

  1. Lien avec envoi de valeur sur un bouton flash
    Par Eisy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/05/2006, 15h28
  2. problème de frame et d'envoi de valeur
    Par mosca_coroneja dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2006, 16h42
  3. Réponses: 7
    Dernier message: 11/02/2006, 00h05
  4. récupérer la valeur d'une liste à l'envoi d'un formulaire
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/01/2006, 10h49
  5. envoie de valeur d'un formulaire vers un autre
    Par kleenex dans le forum Access
    Réponses: 7
    Dernier message: 03/10/2005, 16h55

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