2013-08-29 15 views
9

ファイルを自動的にダウンロードしてディレクトリに保存したいのですが、すべてが完了しますが、firefoxはユーザーのダウンロードフォルダにファイルを保存します。その後、クラスPyWebBotでC:\users\root\DownloadsセレンはFirefoxProfileにダウンロードディレクトリを設定していません

機能

@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' 
+1

使用してみてください '\' あなたのパスはバックスラッシュと指摘されていることを確認します。私はずっと前にこの問題を抱えていました。 – enginefree

+0

did not work :(私はos.path.joinを使用しようとします –

+0

あなたは本当に存在していますか?あなたのスクリプトに 'if os.path.exists'や' os.isfile ' – enginefree

答えて

15

この問題の解決策に結合する方法がありますが、

  1. パスが有効であることを確認してください。 Firefoxabout:configに移動し、変更があったことを確認するために、browser.download.dirを見てアップチェック、セレンドライバで起動すると、何かのように、os.path.existsまたはos.isfile
  2. を使用してください。
  3. 最後に、2は「あなたが指定したディレクトリを使用することを意味し、0がデスクトップにダウンロードすることを意味するので、1はデフォルトの「ダウンロード」ディレクトリにダウンロードすることを意味し、profile.set_preferenceprofile.set_preference("browser.download.folderList",2)は、第2引数として2を持っていることを確認してくださいbrowser.download.dir」
  4. は `の代わりに`/`` \\ない前方 スラッシュ '/'
+2

これは私を助けました!私はフォルダー文字列がフォワードスラッシュではなく**バックスラッシュ**であることを確認しなければなりませんでした。 'C:/ Downloads 'は動作しませんでしたが、' C:\ Downloads'は行いました。 –

関連する問題