如何使用 selenium 和 python 处理 firefox 中的“保存文件”对话框?

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

我正在尝试使用 python 中的 selenium 工具下载 .csv 文件,但在网页中单击保存文件 link 后,浏览器显示对话框 box.I 已尝试"alert" 来处理这个,但它给我错误,比如警报不存在.... 我使用 python 作为脚本语言,使用 selenium 作为工具。 这是我的代码:

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

最后我完成了保存文件对话框。我已经使用一些 firefox 配置文件首选项设置来处理它。因为我无法找到确切的 MIME 类型,所以我使用了所有可能的方法。 下面是我处理保存文件对话框的代码:

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)
 from selenium import webdriver
 from selenium.webdriver.support.ui import WebDriverWait
 import time
 import pyautogui

try :



driver = webdriver.Firefox()

driver.implicitly_wait(30)
driver.maximize_window()

driver.get("https://www.citysdk.eu/wp-content/uploads/2013/09/DELIVERABLE_WP4_TA_SRS_0.21.pdf")
# WebDriverWait(driver, 10).until(lambda d: d.execute_script('return document.readyState') == 'complete')
# Click the OK button and close

time.sleep(5)
webelem = driver.find_element_by_id('download')
webelem.click()

time.sleep(5)
print('press enter')
pyautogui.press('enter')


except Exception as err:
 print('ERROR: %sn' % str(err))

 driver.quit()