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 :

Autoriser la copie dans le presse-papier dans un script python selenium


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 29
    Points
    29
    Par défaut Autoriser la copie dans le presse-papier dans un script python selenium
    Bonjour,

    Je découvre le module selenium pour tester une interface web via chrome.

    J'ai pu faire pas mal de choses afin de ma connecter un site type sharepoint, naviguer dans les documents partagés, télécharger des documents.

    Nom : BaseSharepoint.PNG
Affichages : 46
Taille : 6,5 Ko

    Maintenant, j'aurais voulu copier les liens vers des documents dans le presse papier pour les inclure dans mails générés automatiquement.
    Par contre, je veux à un moment récupérer le lien vers un élément des "shared document". Mais je n'arrive pas à passer au delà du pop-up ci-dessous.
    Nom : PopUp1.PNG
Affichages : 44
Taille : 6,9 Ko

    J'ai essayé pas mal de chose, comme:
    - autoriser le presse papier dans chrome
    - activer la fenêtre d'alerte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    driver.switch_to.alert().accept()
    mais je ne suis pas sur que ce soit une alerte à proprement parler
    - changer l'élément actif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    driver.switch_to.active_element()
    J'ai suivi quelques conseils que j'ai pu faire sur le net :
    https://stackoverflow.com/questions/...bdriver-python
    https://stackoverflow.com/questions/...active#tab-top

    Malheureusement, je n'arrive pas à trouver de solution viable pour passer sur cette fenêtre et appuyer sur le bouton "Autoriser".

    Ci-dessous les deux codes qui me semblent le plus proche d'aboutir à la solution voulue :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import NoSuchElementException
    from zipfile import ZipFile
     
    from SecurityConfClass import *
    from ApplicableConf import *
     
    import pyperclip
    import time
    import os
    import tarfile
     
     
    Link_to_sharepoint_base_url = "https://perso.xxx.com/:f:/r/sites/toto/Shared%20Documents/ExcelFiles=1&web=1&e=RZF9R3"
    StoragePath = os.path.abspath("C:\Perso\Eclipse\Check_ExcelFiles\storage")
    Version_Id = "1.0.0"
    Fct = "DFG"
     
    startTime = time.time()
    print(startTime)
     
    options = webdriver.ChromeOptions()
    prefs = {"download.default_directory" : "C:\\Perso\\Eclipse\\Check_ExcelFiles\\storage"}
    options.add_experimental_option("prefs", prefs)
     
    driver = webdriver.Chrome(options=options) 
    driver.maximize_window()
    driver.get(Link_to_sharepoint_base_url)
     
    CyberPackFold = driver.find_element(By.XPATH,"//*[text()='"+Version_Id+"']");
    CyberPackFold.click()
    EqtFolder = driver.find_element(By.XPATH,"//*[text()='"+Fct+"']");
    EqtFolder.click()
     
     
    youpi2 = driver.find_element(By.XPATH, "//*[text()='Copier le lien']")
    youpi2.click()
    input("taper une touche lorsque la page est ouverte dans le navigateur chrome ... ")
     
    alert = driver.switch_to.alert().accept()
     
    AutorizeCopy = driver.find_element(By.ID, "id__11")
    AutorizeCopy.click()
    print(pyperclip.paste())
    print("end")
    Un autre essai m'a amené au code suivant:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import NoSuchElementException
    from zipfile import ZipFile
     
    from SecurityConfClass import *
    from ApplicableConf import *
     
    import pyperclip
    import time
    import os
    import tarfile
     
     
    Link_to_sharepoint_base_url = "https://perso.xxx.com/:f:/r/sites/toto/Shared%20Documents/ExcelFiles=1&web=1&e=RZF9R3"
    StoragePath = os.path.abspath("C:\Perso\Eclipse\Check_ExcelFiles\storage")
    Version_Id = "1.0.0"
    Fct = "DFG"
     
    startTime = time.time()
    print(startTime)
     
    options = webdriver.ChromeOptions()
    prefs = {"download.default_directory" : "C:\\Perso\\Eclipse\\Check_ExcelFiles\\storage"}
    options.add_experimental_option("prefs", prefs)
     
    driver = webdriver.Chrome(options=options) 
    driver.maximize_window()
    driver.get(Link_to_sharepoint_base_url)
     
    # wait for webpage opened
    input("taper une touche lorsque la page est ouverte dans le navigateur chrome ... ")
     
     
    CyberPackFold = driver.find_element(By.XPATH,"//*[text()='"+Version_Id+"']");
    CyberPackFold.click()
    EqtFolder = driver.find_element(By.XPATH,"//*[text()='"+Fct+"']");
    EqtFolder.click()
     
     
    youpi2 = driver.find_element(By.XPATH, "//*[text()='Copier le lien']")
    youpi2.click()
    input("taper une touche lorsque la page est ouverte dans le navigateur chrome ... ")
     
     
     
    driver.wait_for_pop_up("Lien créé", "30000")
     
     
    driver.switch_to.active_element()
    sel.type("id__11", "Lien créé")
    sel.click("id__11")
    sel.select_window("null")
     
     
     
    sam = driver.find_element(By.XPATH, "//div[@id='share-dialog-container']")
    sam.click()
    AutorizeCopy = driver.find_element(By.ID, "id__11")
    AutorizeCopy.click()
    print(pyperclip.paste())
    print("end")
    Est-ce que quelqu'un pourrait m'aider à comprendre comment passer sur cette fenêtre pour autoriser la copie et revenir à la page du sharepoint avec le lien vers le fichier présent dans le presse papier ?

    Merci
    Images attachées Images attachées  

  2. #2
    Membre à l'essai
    Homme Profil pro
    Python powaaaaa
    Inscrit en
    Décembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Python powaaaaa
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Salut, comment se présentent les liens à copier ? Tu peux faire un screen ?

    Il n'y a que l'option du bouton "copier le lien" pour l'obtenir ?

    C'est difficile de tenter de résoudre ton problème sans y voir clair....

    Ou alors changer de navigateur :

    https://stackoverflow.com/questions/...d-chromedriver

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Septembre 2016
    Messages : 24
    Points : 29
    Points
    29
    Par défaut captures d'écran
    Bonjour,

    Désolé, j'avais extrait les fenêtres qui me semblent à l'origine du blocage.

    Voici la fenêtre chrome:
    Nom : im4.PNG
Affichages : 15
Taille : 38,6 Ko

    Et voici, le code dans lequel je retrouve le bouton "Copier" pour copier le lien:
    Nom : im6.PNG
Affichages : 14
Taille : 51,5 Ko

    Lorsque j'essai d'activer le bouton "copier" par son id, cela ne fonctionne pas comme si je n'étais pas sur la bonne fenêtre. Nom : im007.PNG
Affichages : 15
Taille : 6,8 Ko

    Sur la fenêtre : Nom : im1.PNG
Affichages : 14
Taille : 6,9 Ko, si j'appuie manuellement sur le bouton autoriser, je récupère bien le lien dans le presse papier. Mais je n'arrive pas non plus à réaliser cette action dans mon script.

    Les scripts sont en début de post.

    J'ai essayé d'ajouter les options :
    option.add_argument('--disable-infobar')
    option.add_argument('--disable-extensions')
    option.add_argument('--disable_notifications')


    Mais cela ne change rien au problème. J'ai toujours ces deux fenêtres qui m'empêche de récupérer le lien...

    Auriez-vous des idées de comment contourner ce problème ?

    Merci de votre aide.

Discussions similaires

  1. [Débutant] Autorisation de copie dans program files
    Par thierry007 dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/12/2014, 15h58
  2. Utilisation de C++ dans un script python.
    Par Ekinoks dans le forum Interfaçage autre langage
    Réponses: 8
    Dernier message: 18/01/2007, 19h03
  3. import dans les script python (objet zope)
    Par cronos6 dans le forum Zope
    Réponses: 5
    Dernier message: 10/09/2006, 14h47
  4. Radio boutton dans un script python
    Par Abla23 dans le forum Zope
    Réponses: 17
    Dernier message: 12/07/2006, 17h12
  5. Réponses: 3
    Dernier message: 05/04/2005, 14h26

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