用于在python中使用selenium webdriver下载的Windows弹出交互

时间:2017-05-25 07:41:49

标签: python selenium webdriver firefox-profile

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

enter image description here

选中默认选项“打开方式”。我希望我的程序首先单击“保存文件”选项,然后单击“确定”。 我使用以下代码来设置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())    

但是现在我没有得到如何与这个窗口互动?

2 个答案:

答案 0 :(得分:2)

您应该尝试使用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文件的{{1}}类型列表here

答案 1 :(得分:2)

经过大量的研究和研究,我得到了以下代码,这些代码对这种情况很有帮助。

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