Search code examples
python-2.6

How to handle Save File dialog box in firefox using selenium with python?


I'm trying to download .csv file using selenium tool in python but after clicked on save file link in web page, the browser is showing me dialog box.I tried "alert" to handle this but it gives me error like, alert is not present.... I'm using python as a scripting language and selenium as a tool. here is the my code:

fp = webdriver.FirefoxProfile()
fp.set_preference('browser.download.folderList', 2) # custom location
fp.set_preference('browser.download.manager.showWhenStarting', False)
fp.set_preference('browser.download.dir', 'C:\Temp\')
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/csv,text/csv,text/comma-separated-values, application/octet-stream')
driver = webdriver.Firefox(profile)
driver.window_handles
driver.swich_to_window(driver.window_handles[0])
url=''
driver.get(url)
pass=driver.find_element_by_id('pswd')
pass.send_keys('xyz123')
driver.find_element_by_id('btnLogin').click()
driver.implicitly_wait(30)
driver.find_element_by_link_text('FileName').click()
driver.switch_to_alert().accept()

Solution

  • Finally I am done with Save file dialog box. I have handled it with some firefox profile preference settings. Since I was not unable to find out the exact MIME type I used all possible. Below is my code to handle the Save file Dialog box :

    fp = webdriver.FirefoxProfile()
    fp.set_preference('browser.download.folderList', 2) 
    fp.set_preference('browser.download.manager.showWhenStarting', False)
    fp.set_preference('browser.download.dir', r'C:\Temp\')
    fp.set_preference('browser.helperApps.neverAsk.openFile', 'text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml')
    fp.set_preference('browser.helperApps.neverAsk.saveToDisk', 'text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml')
    fp.set_preference('browser.helperApps.alwaysAsk.force', False)
    fp.set_preference('browser.download.manager.alertOnEXEOpen', False)
    fp.set_preference('browser.download.manager.focusWhenStarting', False)
    fp.set_preference('browser.download.manager.useWindow', False)
    fp.set_preference('browser.download.manager.showAlertOnComplete', False)
    fp.set_preference('browser.download.manager.closeWhenDone', False)
    driver = webdriver.Firefox(fp)
    driver.window_handles
    driver.switch_to_window(driver.window_handles[0])
    url=''
    driver.get(url)
    pass=driver.find_element_by_id('pswd')
    pass.send_keys('xyz123')
    driver.find_element_by_id('btnLogin').click()
    driver.implicitly_wait(30)
    driver.find_element_by_link_text('FileName').click()
    time.sleep(5)