Définir selenium pour utiliser le profil personnalisé, mais il garde l'ouverture par défaut

j'essaie d'utiliser python et sélénium pour automatiser certaines tâches dans firefox. Lorsque je télécharge un fichier, Ce pop up vient demander si vous voulez ouvrir ou enregistrer, et une case à cocher pour faire cela à chaque fois avec ce type de fichier. J'ai trouvé que la boîte à cocher ne fonctionne pas à moins que vous installez le Ajouter sur la page Web Fixer. Je l'ai installé normalement, mais lorsque j'utilise python + sélénium il utilise un profil sans add-ons.

l'internet m'a demandé de créer un autre profil par fermer Firefox, ouvrir / Applications/ Utilities, puis taper la commande:

/Applications/Firefox.app/Contents/MacOS/firefox-bin -p

je crée alors un nouveau profil que j'utiliserai avec le sélénium. Je mets le nom et je 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 mon écran de 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 à non succès.

profile = webdriver.FirefoxProfile(os.path.expanduser("~/Library/Application Support/Firefox/Profiles/Selenium/"))
driver = webdriver.Firefox(firefox_profile=profile) 

pas d'erreur, utilisateur par défaut.

profile = webdriver.FirefoxProfile(os.path.expanduser("~/Library/Application Support/Firefox/Profiles/Selenium/"))
driver = webdriver.Firefox(profile) 

pas d'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.télécharger.dir", getcwd()) NameError: le nom 'getcwd' n'est pas défini

avez-vous une idée de ce que je fais de 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 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)
29
demandé sur ExperimentsWithCode 2013-04-11 21:02:17

3 réponses

erreur: fp.set_preference ("browser.télécharger.dir",getcwd ()) NameError: nom de "getcwd" n'est pas défini

getcwd() n'est pas défini. Donc je suppose que vous voulez le getcwdos module:

ajouter: import os puis d'appeler os.getcwd().

ou vous pouvez simplement ajouter l'importation pour cette fonction: from os import getcwd

ton exemple avec le bon importations incluses:

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)
25
répondu Corey Goldberg 2013-04-11 17:20:04

j'ai fait le code suivant:

Open Profile Directory

Ou:

Linux:ls -d /home/$USER/.mozilla/firefox/*.default/ pour voir le profil de l'utilisateur répertoires

Mac:ls -d ~/Library/Application\ Support/Firefox/Profiles/*

Sortie:

/home/jmunsch/.mozilla/firefox/xfoyzfsb.default/
/home/jmunsch/.mozilla/firefox/yxjwk1py.default/

pour charger un profil d'utilisateur personnalisé, j'ai créé un profil dans firefox et j'ai ensuite fait ce qui suit avec le code Python selenium webdriver:

def setUp(self):
    self.profile = webdriver.FirefoxProfile('/home/jmunsch/.mozilla/firefox/yxjwk1py.default')
    self.driver = webdriver.Firefox(self.profile)

Info 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

aussi remarque

la réponse de@Corey pour définir manuellement un profil

tous les configurables se trouvent sous about:config:

profile.set_preference('browser.download.folderList', 2)

15
répondu jmunsch 2016-07-15 03:29:14

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 fonctionne!

4
répondu Gili Hary 2016-05-19 05:22:59