I'm trying to automatically download a file with selenium. To do so I would like to set the default download directory and disable the download prompt. It doesn't seem to be working and the options I'm passing don't even seem to be registering. Below is a sample of how I create the browser. Does anyone know what is going on?
chromedriver = 'PATH/TO/chromedriver'
download_fp = './testPrismaDownload/'
prefs = {
"download.prompt_for_download" : False,
"download.default_directory": download_fp
}
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome-stable'
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-setuid-sandbox')
options.add_experimental_option('prefs', prefs)
# i've tried various combinations of `options`, `chrome_options` (deprecated) and `desired_capabilities`
browser = webdriver.Chrome(options=options, desired_capabilities=options.to_capabilities(), executable_path=chromedriver)
none of my specified options appear in browser.capabilities
or browser.desired_capabilities
. For example the key for chromeOptions in capabilities is goog:chromeOptions': {'debuggerAddress': 'localhost:42911'}
.
When I do download_button.click()
the command succeeds but nothing downloads. I've also tried it on my mac laptop without the --headless option and when I click the download button the browser opens the download dialog prompting for download confirmation.
Any help/experience would be greatly appreciated.
Python 3.6.6 :: Anaconda, Inc.
Selenium '3.141.0'
Linux 9725a3ce7b7e 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
self.driver.switch_to.window(instances[1]) IndexError: list index out of range
. – Gang