3

我正在制作一个程序来使用 python 中的 selenium webdriver 自动下载数据。当我点击弹出窗口后的“下载”按钮时

.在此处输入图像描述

选择默认选项“打开方式”。我希望我的程序首先单击“保存文件”选项,然后单击“确定”。我使用以下代码来设置 Firefox 配置文件

    profile = webdriver.FirefoxProfile()
    profile.set_preference('browser.download.folderList', 2)
    profile.set_preference('browser.download.manager.showWhenStarting', False)
    profile.set_preference('browser.download.dir', os.getcwd())
    profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/xlsx")

但在我的情况下它不起作用。然后我尝试使用以下代码从主窗口切换到此窗口

    parent_h = driver.current_window_handle
    handles = driver.window_handles
    handles.remove(parent_h)
    driver.switch_to_window(handles.pop())    

但是现在我不知道如何与这个窗口进行交互?

4

2 回答 2

3

您应该尝试使用具有正确MIME类型的首选项作为xlsx扩展名"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",但不是"application/xlsx"

profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

您可以在此处MIME查看 Microsoft Office 文件的类型列表

于 2017-05-25T07:56:32.080 回答
3

经过这么多的发现和研究,我得到了以下代码,这对这种情况会有所帮助。

    profile = webdriver.FirefoxProfile()
    profile.set_preference("browser.download.dir",os.getcwd());
    profile.set_preference("browser.download.folderList",2);
    profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream");
    profile.set_preference("browser.download.manager.showWhenStarting",False);
    profile.set_preference("browser.helperApps.neverAsk.openFile","application/csv,application/excel,application/vnd.msexcel,application/vnd.ms-excel,text/anytext,text/comma-separated-values,text/csv,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/octet-stream");
    profile.set_preference("browser.helperApps.alwaysAsk.force", False);
    profile.set_preference("browser.download.manager.useWindow", False);
    profile.set_preference("browser.download.manager.focusWhenStarting", False);
    profile.set_preference("browser.download.manager.alertOnEXEOpen", False);
    profile.set_preference("browser.download.manager.showAlertOnComplete", False);
    profile.set_preference("browser.download.manager.closeWhenDone", True);
    profile.set_preference("pdfjs.disabled", True);
于 2017-06-04T07:47:33.510 回答