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

Réseau/Web Python Discussion :

Selenium : automatiser login


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut Selenium : automatiser login
    Bonjour

    Je voudrais automatiser certaines taches rébarbatives avec l'aide de python3 et Selenium, je pense que c'est l'outil dont j'ai besoin pour faire cela.

    Comme premier exercice, je tente d'automatiser mon actualisation poleemploi, Mais je bloque presque dès le début lors du login.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
     
    username = "MonIdentifiant"
    password = "MonMotDePasse?"
     
    browser = webdriver.Firefox()
    browser.get('https://authentification-candidat.pole-emploi.fr/connexion/XUI/#login/&realm=%2Findividu&goto=https%3A%2F%2Fauthentification-candidat.pole-emploi.fr%3A443%2Fconnexion%2Foauth2%2Fauthorize%3Frealm%3D%252Findividu%26response_type%3Did_token%2520token%26scope%3Dopenid%2520idRci%2520profile%2520contexteAuthentification%2520email%2520courrier%2520notifications%2520etatcivil%2520logW%2520individu%2520pilote%2520nomenclature%2520coordonnees%2520navigation%2520reclamation%2520prdvl%2520idIdentiteExterne%2520pole_emploi%2520suggestions%2520actu%2520application_USG_PN073-tdbcandidat_6408B42F17FC872440D4FF01BA6BAB16999CD903772C528808D1E6FA2B585CF2%26client_id%3DUSG_PN073-tdbcandidat_6408B42F17FC872440D4FF01BA6BAB16999CD903772C528808D1E6FA2B585CF2%26state%3DZ0EQXM1qBfk2YepP%26nonce%3DNToqzXUwa3w0e6MM%26redirect_uri%3Dhttps%253A%252F%252Fcandidat.pole-emploi.fr%252Fespacepersonnel%252F')
     
     
    browser.find_element_by_id("identifiant").send_keys(username)
    #browser.find_element_by_id (“ID”).send_keys(password)
    #browser.find_element_by_id(“submit”).click()
    MonIdentifiant refuse de s'inscrire dans case correspondante !

    Idem chez NoIP.com.

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Si cela peut t'aider...
    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
    25
     
    ch1 = Identifier
    ch2 = PassWord
     
     
    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
     
    driver = webdriver.Chrome("/usr/bin/chromedriver")
    driver.get("https://accounts.google.com/")
     
    assert "comptes Google" in driver.title
     
    elem = driver.find_element_by_name("identifier")
    elem.send_keys(ch1)
     
    driver.find_element_by_id("identifierNext").click()
    password = WebDriverWait(driver, 5).until(
        EC.element_to_be_clickable((By.XPATH, "//input[@name='password']"))
    )
    password.send_keys(ch2)
    element = driver.find_element_by_id('passwordNext')
    driver.execute_script("arguments[0].click();", element)
    Pas d'aide par mp.

  3. #3
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut
    Je pense que mon soucis est pour identifier l'élément à prendre en compte. (par id, name, ou autre ..)

    L'inspection de l'élément en question ne m'est vraiment pas clair. J'ai vraiment beaucoup de difficultés à saisir ce qui s'y trouve.

    Dans cette partie du script par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elem = driver.find_element_by_name("identifier")
    Pourquoi choisir by_name ? plutot que by_id ? Par id, en effet ça ne fonctionne plus ! Pourquoi donc ?

    Comment devrais-je repérer le champs identifiant du site poleemploi ? Sur certain tuto, ils semblent copier le "CSS selector" ou "XPath" ou "CSS Path".

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Il faut cliquer sur le champ à remplir et cliquer droit pour examiner l'élément ou carrément voir le code la page.
    Ici, pour toi, j'ai l'impression que c'est :
    id et identifiant.
    Je t'ai donné mon exemple pour que tu puisses comparer. Cela prend un peu de temps sans doute... Il faut vérifier que le champ se remplit bien.
    Pas d'aide par mp.

  5. #5
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut
    Ton exemple fonctionne bien.

    Id et identifiant ne fonctionne pas sur poleemploi.

    Je n'arrive pas à transposer ton exemple par analogie.

  6. #6
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut
    Le soucis est pour trouver le "locator" et à quel type de locator il correspond !


    find_element_by_id
    find_element_by_name
    find_element_by_xpath
    find_element_by_link_text
    find_element_by_partial_link_text
    find_element_by_tag_name
    find_element_by_class_name
    find_element_by_css_selector


    Le click droit ne me laisse la possibilité que pour copier certain "locator" :
    Nom : selenium_locator.png
Affichages : 1552
Taille : 127,2 Ko
    Je ne peux copier l'id ou name !!!

    Impossible de trouver un tuto clair a ce sujet. Ils se bornent tous à expliquer :
    utilisez " find_element_by_css_selector", choisissez "css_selector" , mais comment savoir si mon élément en possède 1. Ou pourquoi choisir " find_element_by_css_selector" plutot que "find_element_by_id"

    Et pourquoi si je choisi "find_element_by_id", je ne peux récupérer cet "id" par un copier/coller sur la page web ? Je suis obligé de le recopier à la main.

  7. #7
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut
    Bon, finalement, mon "locator" ne trouvait pas l'élément car la page mettait un certain temps à apparaître (non perceptible à l'oeil mais trop lente pour le script python)

    J'ai donc inclus des poses time.sleep() entre chaque étapes.

    Il y a bien une autre méthode avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from selenium.webdriver.support.ui import WebDriverWait
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from selenium.webdriver.support import expected_conditions as EC
    mais je n'arrive pas à le faire fonctionner, bien que sans nul doute plus élégante.

    Je devrai maintenant attendre l'actualisation du mois prochain pour perfectionner mon code/exercice car une fois validé sur le site, je ne peux plus relancer la procédure/script.

    Merci pour l'aide en tout cas, je finissais par désespérer !

Discussions similaires

  1. [Selenium] Automatiser la création de test
    Par max-mag dans le forum Test
    Réponses: 3
    Dernier message: 17/02/2011, 11h35
  2. automatiser l'etape de login pour passer au ghost
    Par badr-22 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 14/07/2010, 01h58
  3. Automatiser remplissage login et mot de passe
    Par ananar dans le forum Scripts/Batch
    Réponses: 10
    Dernier message: 04/09/2008, 14h16
  4. Automatiser login et mot de passe sur telnet
    Par sajodia dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 02/07/2008, 14h55
  5. Automatiser login et remplissage de champs
    Par Invité dans le forum Langage
    Réponses: 8
    Dernier message: 08/05/2008, 23h27

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