python - Selenium 打开或保存窗口如何下载文件
问题描述
我正在尝试使用 Selenium 保存文件,并且可能阅读了有关 stackoverflow 的所有相关问题,但仍然无济于事。
有人可以看看我的代码吗?也许我错过了一些明显的东西。或者也许有另一种使用 Selenium 下载它的方法?
我的代码:
def attachments(url):
profile = FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference("browser.download.dir", r"C:\Users\Herminne\Desktop\Version")
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')
profile.set_preference('browser.helperApps.neverAsk.openFile','application/zip')
profile.set_preference('browser.helperApps.alwaysAsk.force', False)
profile.set_preference('browser.download.manager.alertOnEXEOpen', False)
profile.set_preference('browser.download.manager.focusWhenStarting', False)
profile.set_preference('browser.download.manager.useWindow', False)
profile.set_preference('browser.download.manager.showAlertOnComplete', False)
profile.set_preference('browser.download.manager.closeWhenDone', False)
profile.set_preference("pdfjs.disabled", True)
driver = webdriver.Firefox(firefox_profile=profile)
driver.get(url)
username = driver.find_element_by_id('ctl00_MainPlaceHolder_UserName')
password = driver.find_element_by_id('ctl00_MainPlaceHolder_Password')
username.send_keys(payload.get('username'))
password.send_keys(payload.get('password'))
username.send_keys(keys.ENTER)
time.sleep(60)
driver.find_element_by_id(
'ctl00_MenuPlaceHolder_btnOrderAttachmentsFromClaim').click()
time.sleep(60)
driver.find_element_by_tag_name('label').click()
time.sleep(15)
driver.find_element_by_id('ctl00_Content_btnDownload').click()
time.sleep(60)
解决方案
我通过在 Firefox 的 about:config 中配置配置文件解决了这个问题,添加了我能找到的所有文件类型(但我的是)browser.helperApps.neverAsk.saveToDisk
并将这个配置文件传递给 FirefoxProfile( )。奇怪的是,当我在 中添加相同的文件扩展名时,它不起作用。我希望这能帮助那些在下载方面苦苦挣扎的人browser.helperApps.neverAsk.openFile
application/force-download\n
profile = FirefoxProfile(r"C:\Users\Path\to\profile
profile.set_preference
推荐阅读
- python-2.7 - 你如何配置cherrypy以支持python 2.7上的https?
- angular - 在 autoGroupColumn 中启用 floatingFilter
- ruby-on-rails - RSpec如何引发错误的异常 - 预期ZeroDivisionError但没有引发
- java - 如何使用 MediaProjection API 从后台服务类中截取屏幕截图?
- mongodb - 如何在mongodb中的过滤器后输出/映射仅包含必填字段的数组?
- javascript - 根据值数组从数组中删除项目
- highcharts - 类别的 TickWidth 0(不在分组类别中)
- firebase - 从函数记录 Analytics 事件
- c# - 从 json 数组字符串中获取数据到字符串变量
- git - TortoiseGIT 不同文件合并