web-dev-qa-db-ja.com

Selenium WebdriverのPython-ファイルのダウンロードディレクトリの変更Chrome設定

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

ダメ。ダウンロードは引き続きデフォルトのダウンロードフォルダー( "/ Users/thiagomarzagao/Downloads")に移動します。

何かご意見は?

(Python 2.7.5、Selenium 2.2.0、Chromedriver 2.1.210398、Mac OS X 10.6.8)

19
Parzival

次は私のために働いた:

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

48
MervS

まだ問題が解決せず、上記の解決策が機能しない場合は、ダウンロードパスに次のスラッシュ( '\')を追加します。

私のものは次のように見えました。

    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)
10
yvesva

あなたも必要だと思う

"directory_upgrade": true

Chrome 'Prefrences'ファイル、ローカルWindowsインストールchromeバージョン28.0.1500.95 m、次のダウンロードオプションを使用)で辞書を直接使用する:

   "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": ""}}}
3
R Dub

この質問のすべてのアンサーを試しますが、私のinUbuntu 16.10では機能しません。そこで、変数にos.environを使用して変更を追加しますXDG_DOWNLOAD_DIR。これは機能しませんが、役立つと思います。

あれは:

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

私にとって完璧に機能するという実際の変更は、コマンドxdg-user-dirs-updateを介してダウンロードフォルダをセットアップすることです実行時のシステムコール:

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)
1
shakaran

なぜ実装が機能しないのか疑問に思っている人のために:動作させるにはフルパスを指定する必要があります。例えば「/ Users/you/dlfolder」は機能しませんが、「C:/ Users/you/dlfolder」は機能します。

0
Camilo Fosco