Python中硒的webdriver - 文件下载目录变化Chrome的偏好

问题描述 投票:17回答:5

我使用webdriver的硒(在Python)来自动的数以千计的文件的下载。我想以编程方式设置Chrome的下载文件夹。阅读this之后,我尝试这样做:

chromepath = '/Users/thiagomarzagao/Desktop/searchcode/chromedriver'
desired_caps = {'prefs': {'download': {'default_directory': '/Users/thiagomarzagao/Desktop/downloaded_files/'}}}
driver = webdriver.Chrome(executable_path = chromepath, desired_capabilities = desired_caps)

不好。下载还是去到默认的下载文件夹(“/用户/ thiagomarzagao /下载”)。

有什么想法吗?

(Python的2.7.5,2.2.0硒,Chromedriver 2.1.210398的Mac OS X 10.6.8)

python python-2.7 selenium-webdriver selenium-chromedriver
5个回答
49
投票

以下为我工作:

chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "/some/path"}
chromeOptions.add_experimental_option("prefs",prefs)
chromedriver = "path/to/chromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chromeOptions)

来源:https://sites.google.com/a/chromium.org/chromedriver/capabilities


10
投票

如果有人仍然有麻烦,上述解决方案没有工作,我发现增加了以下斜杠(“\”),我的下载路径。

煤矿是这样的:

    if browser == 'chrome':
        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        prefs = {"profile.default_content_settings.popups": 0,
                 "download.default_directory": r"C:\Users\user_dir\Desktop\\", # IMPORTANT - ENDING SLASH V IMPORTANT
                 "directory_upgrade": True}
        options.add_experimental_option("prefs", prefs)
        return webdriver.Chrome(executable_path=Base.chromedriver_dir, chrome_options=options)

3
投票

我想你也需要

"directory_upgrade": true

直接在Chrome的Prefrences'文件使用字典,在本地Windows安装Chrome版本28.0.1500.95米,用下面的下载选项:

   "download": {
      "default_directory": "C:\\Users\\rdub\\Desktop",
      "extensions_to_open": ""
   },

我得到的默认位置,与桌面。当我把它改成这样:

   "download": {
      "default_directory": "C:\\Users\\rdub\\Desktop",
      "directory_upgrade": true,
      "extensions_to_open": ""
   },

我得到的桌面位置。

尝试以下方法:

desired_caps = {'prefs': {'download': {'default_directory': '/Users/thiagomarzagao/Desktop/downloaded_files/', "directory_upgrade": true, "extensions_to_open": ""}}}

1
投票

我试图在这个问题所有的anwsers,但它并没有为我在Ubuntu 16.10的工作。所以我想补充与os.environ的变量XDG_DOWNLOAD_DIR的变化。这是不行的,但我认为它帮助。

那是:

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

完美的作品对我来说真正的变化是通过设置通过执行时间的系统调用命令XDG-用户迪尔斯更新的下载文件夹:

os.system("xdg-user-dirs-update --set DOWNLOAD " + default_download_directory)

所以,我的所有相关设置下载目录代码如下:

import os
from selenium import webdriver

default_download_directory = str(os.path.dirname(os.path.abspath(__file__))) + "/download"

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

os.system("xdg-user-dirs-update --set DOWNLOAD " + default_download_directory)

desired_caps = {
    'prefs': {
            'download': {
                'default_directory': str(os.path.dirname(os.path.abspath(__file__))) + "/download", 
                "directory_upgrade": "true", 
                "extensions_to_open": ""
                }
              }
        }

options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=" + str(os.path.dirname(os.path.abspath(__file__))) + "/download")

browser = webdriver.Chrome(chrome_options=options, desired_capabilities=desired_caps)

0
投票

对于任何人仍然不知道为什么他们的执行不工作:你必须把完整的路径为它工作。例如'/用户/您/ dlfolder' 将无法正常工作,而 'C:/用户/您/ dlfolder' 的意愿。

© www.soinside.com 2019 - 2024. All rights reserved.