web-dev-qa-db-fra.com

Configuration de Selenium pour utiliser un profil personnalisé, mais il continue à s'ouvrir par défaut

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)
29

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)
26
Corey Goldberg

J'ai fait ce qui suit:

Open Profile Directory

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

noter également

@ 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)

16
jmunsch

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!

5
Gili Hary