【发布时间】:2013-09-02 12:25:51
【问题描述】:
我想自动下载文件并将它们保存在目录中,一切都已完成,但 Firefox 仍将文件保存在用户下载文件夹中,例如C:\users\root\Downloads
PyWebBot 类中的函数
@staticmethod
def FirefoxProfile(path, handlers):
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList",1)
profile.set_preference("browser.download.manager.showWhenStarting",False)
profile.set_preference("browser.download.dir", path)
profile.set_preference("browser.download.downloadDir", path)
profile.set_preference("browser.download.defaultFolder", path)
profile.set_preference("browser.helperApps.alwaysAsk.force", False)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", handlers)
profile.set_preference("pdfjs.disabled", True)
profile.update_preferences()
return profile
然后
def setUp(self):
self.profile = PyWebBot.FirefoxProfile(config['downloads'], config['handlers'])
self.driver = webdriver.Firefox(self.profile)
...
...
配置:
config['downloads'] = 'Q:/web2py_src/web2py/applications/internet2letter/private/testing/selenium/downloads'
config['handlers'] = 'application/pdf'
【问题讨论】:
-
尝试使用 ` \\ ` 而不是
/。我前段时间遇到过这个问题。 -
没用 :( 我会尝试使用 os.path.join
-
你确定它存在吗?最好确保在您的脚本中,例如
if os.path.exists或os.isfile -
没有用,我在哪里可以找到 set_preference 的所有选项?也许还有其他关于下载文件夹的选项,而不是也应该设置的 downloaddir、dir、defaultfolder ..
>>> os.path.isfile(x) False >>> os.path.exists(x) True >>> x 'Q:\\web2py_src\\web2py\\applications\\internet2letter\\private\\testing\\seleni um\\downloads' -
我认为还有另一种方法可以帮助您。当firefox启动时,转到
about:config,找到browser.download.dir并检查该值是否已设置。你做错的另一件事是profile.set_preference("browser.download.folderList",2)。应该是2而不是1。