J'essaie d'utiliser python et Selenium pour automatiser certaines tâches dans firefox. Lorsque je télécharge un fichier, cette fenêtre apparaît vous demandant si vous souhaitez ouvrir ou enregistrer, et une case à cocher pour faire cela à chaque fois avec ce type de fichier. J'ai trouvé que la case à cocher ne fonctionne pas sauf si vous installez l'add sur le fixateur de page Web. Je l'ai installé normalement, mais lorsque j'utilise python + Selenium il utilise un profil sans add-on.
Internet m'a demandé de créer un autre profil en fermant Firefox, en ouvrant/Applications/Utilitaires, puis en tapant la commande:
/Applications/Firefox.app/Contents/MacOS/firefox-bin -p
Je crée ensuite un nouveau profil que j'utiliserai avec Selenium. Je mets le nom et change le nom du dossier. Le nom du profil est "PTI_Auto_Profile". Le chemin du dossier s'affiche comme suit:
/users/User/Library/Application Support/Firefox/Profiles/Selenium/
Quand j'aurai fini. Je clique sur "Démarrer Firefox" et l'erreur suivante apparaît sur l'écran de mon terminal.
2013-04-11 11:57:30.422 firefox-bin[2248:707] invalid drawable
conf-room:~ User$ 2013-04-11 11:58:00.350 firefox-bin[2251:303] invalid drawable
J'ai essayé ce qui suit sans succès.
profile = webdriver.FirefoxProfile(os.path.expanduser("~/Library/Application Support/Firefox/Profiles/Selenium/"))
driver = webdriver.Firefox(firefox_profile=profile)
Aucune erreur, utilisateur par défaut.
profile = webdriver.FirefoxProfile(os.path.expanduser("~/Library/Application Support/Firefox/Profiles/Selenium/"))
driver = webdriver.Firefox(profile)
Aucune erreur, utilisateur par défaut.
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/csv/xls")
driver = webdriver.Firefox(firefox_profile=fp)
Erreur: fp.set_preference ("browser.download.dir", getcwd ()) NameError: le nom 'getcwd' n'est pas défini
Des idées sur ce que je fais mal? Je vous remercie!
p.s. J'utilise mac os x 10.8.2, python 2.7, firefox 20
SOLUTION FOURNIE PAR Corey Goldberg. Cela devrait fonctionner pour toutes les versions d'Excel.
import os
from Selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/vnd.ms-Excel'))
driver = webdriver.Firefox(profile)
Erreur: fp.set_preference ("browser.download.dir", getcwd ()) NameError: le nom 'getcwd' n'est pas défini
getcwd()
n'est pas défini. Je suppose donc que vous voulez le getcwd
du module os
:
ajoutez: import os
, puis appelez avec os.getcwd()
.
ou vous pouvez simplement ajouter l'importation pour cette fonction: from os import getcwd
votre exemple avec les importations appropriées inclus:
import os
from Selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv/xls')
driver = webdriver.Firefox(profile)
J'ai fait ce qui suit:
Ou:
Linux: ls -d /home/$USER/.mozilla/firefox/*.default/
Pour voir les répertoires de profil utilisateur
Mac: ls -d ~/Library/Application\ Support/Firefox/Profiles/*
Production:
/home/jmunsch/.mozilla/firefox/xfoyzfsb.default/
/home/jmunsch/.mozilla/firefox/yxjwk1py.default/
Pour charger un profil utilisateur personnalisé, j'ai parcouru la création d'un profil dans Firefox, puis j'ai fait ce qui suit avec le python code de sélecteur Web Selenium:
def setUp(self):
self.profile = webdriver.FirefoxProfile('/home/jmunsch/.mozilla/firefox/yxjwk1py.default')
self.driver = webdriver.Firefox(self.profile)
Information système:
Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg_resources;pkg_resources.get_distribution("Selenium").version
jmunsch@NE-522:~/Desktop/work$ firefox --version
Mozilla Firefox 26.0
@ Réponse de Corey pour définir manuellement un profil
Tous les paramètres configurables se trouvent sous about:config
:
profile.set_preference('browser.download.folderList', 2)
Vous devez ajouter ceci:
profile.set_preference("browser.helperApps.neverAsk.openFile",
"text/csv,application/x-msexcel,application/Excel,application/x-Excel,application/vnd.ms-Excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml")
Ça marche!