首页 > 解决方案 > 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)

标签: pythonselenium-webdriverweb-scraping

解决方案


我通过在 Firefox 的 about:config 中配置配置文件解决了这个问题,添加了我能找到的所有文件类型(但我的是)browser.helperApps.neverAsk.saveToDisk并将这个配置文件传递给 FirefoxProfile( )。奇怪的是,当我在 中添加相同的文件扩展名时,它不起作用。我希望这能帮助那些在下载方面苦苦挣扎的人browser.helperApps.neverAsk.openFileapplication/force-download\nprofile = FirefoxProfile(r"C:\Users\Path\to\profileprofile.set_preference


推荐阅读