【问题标题】:Setting selenium to use custom profile, but it keeps opening with default将 selenium 设置为使用自定义配置文件,但它保持默认打开
【发布时间】:2013-04-11 17:02:17
【问题描述】:

我正在尝试使用 python 和 selenium 来自动化 Firefox 中的一些任务。当我下载文件时,会弹出询问您是否要打开或保存文件,并且每次使用此类文件时都会出现一个复选框。我发现除非您在 Web Page Fixer 上安装插件,否则该复选框不起作用。我已经正常安装了,但是当我使用 python + selenium 时,它使用没有附加组件的配置文件。

互联网指示我关闭 Firefox,打开 /Applications/Utilities,然后输入以下命令来创建另一个配置文件:

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

然后我创建一个新的配置文件,我将与 selenium 一起使用。我设置名称并更改文件夹名称。配置文件名称是“PTI_Auto_Profile”。文件夹路径显示如下:

/users/User/Library/Application Support/Firefox/Profiles/Selenium/

当我完成时。我单击“启动 Firefox”,终端屏幕上出现以下错误。

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

我尝试了以下方法,但没有成功。

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

没有错误,默认用户。

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

没有错误,默认用户。

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)

错误: fp.set_preference("browser.download.dir",getcwd()) NameError: 名称 'getcwd' 未定义

关于我做错了什么有什么想法吗?谢谢!

附言我正在使用 mac os x 10.8.2、python 2.7、firefox 20

Corey Goldberg 提供的解决方案。这应该适用于所有 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)

【问题讨论】:

  • 试试怎么样:driver = webdriver.Firefox(firefox_profile=profile)

标签: python macos firefox selenium-webdriver


【解决方案1】:

错误:fp.set_preference("browser.download.dir",getcwd()) NameError: 名称“getcwd”未定义

getcwd() 未定义。所以我假设你想要来自os 模块的getcwd

添加:import os,然后调用os.getcwd()

或者你可以只为这个函数添加导入: from os import getcwd

包含正确导入的示例:

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)

【讨论】:

  • 谢谢!我发现底部最偏好的最后一部分是 MIME 类型。通过将 'text/csv/xls' 替换为 'application/vnd.ms-excel' 我成功地下载了没有弹出窗口的 excel 文件。网上的 Word 是否适用于所有 excel 文件版本。
  • 不幸的是,这段代码对我的浏览器没有影响。我仍然看到那个弹出窗口。我在 Win 7 - 64 位和 python 2.7 上工作;你能帮帮我吗?
【解决方案2】:

我做了以下事情:

或者:

Linux:ls -d /home/$USER/.mozilla/firefox/*.default/ 查看用户配置文件目录

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

输出:

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

为了加载自定义用户配置文件,我在 firefox 中创建了一个配置文件,然后使用 python selenium webdriver 代码执行了以下操作:

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

系统信息:

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

另请注意

@Corey 手动设置配置文件的答案

所有可配置项都可以在about:config 下找到:

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

【讨论】:

  • 找到了一个链接,如何为 Firefox 创建 selenium 配置文件:girliemangalo.wordpress.com/2009/02/05/…
  • 这适用于 python3.5、Ubuntu、FF48。在代码中手动设置配置文件不起作用。
【解决方案3】:

你应该添加这个:

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

确实有效!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 2021-01-23
    • 2012-01-09
    • 2020-03-15
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多