创建Webdriver后Selenium Firefox配置文件更新下载目录

Pyt*_*Man 2 python selenium

我想知道启动驱动程序后如何更新/更改硒中的下载位置?

创建配置文件和启动Webdriver期间设置下载目录不是问题。启动webdriver根据数据类型更改目录后出现问题。

例如,-如果dl doc是Word保存在Docs \ Word中-如果dl doc是pdf保存在Docs \ pdf中

这是我的代码

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference("browser.download.folderList", 2)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/download,application/octet-stream,application/pdf')
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)
driver.delete_all_cookies()
sleep(10)
# this part doesn't work
driver.profile.set_preference('browser.download.dir',"{0}\{1}".format(os.getcwd(),"Docs"))
driver.profile.update_preferences()
Run Code Online (Sandbox Code Playgroud)

Flo*_* B. 5

借助Firefox,一旦上下文设置为,就可以在运行时通过scrip注入更改首选项chrome

def set_download_dir(driver, directory):
  driver.command_executor._commands["SET_CONTEXT"] = ("POST", "/session/$sessionId/moz/context")
  driver.execute("SET_CONTEXT", {"context": "chrome"})

  driver.execute_script("""
    Services.prefs.setBoolPref('browser.download.useDownloadDir', true);
    Services.prefs.setStringPref('browser.download.dir', arguments[0]);
    """, directory)

  driver.execute("SET_CONTEXT", {"context": "content"})
Run Code Online (Sandbox Code Playgroud)