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

Windows popup interaction for downloading using selenium webdriver in python

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

.

选择了默认选项 "Open with"。我希望我的程序首先单击选项 "save file",然后单击 "OK"。 我使用以下代码来设置 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")

但这对我来说不起作用。然后我尝试使用以下代码

从主 window 切换到此 window
    parent_h = driver.current_window_handle
    handles = driver.window_handles
    handles.remove(parent_h)
    driver.switch_to_window(handles.pop())    

但现在我不知道如何与之互动 window?

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

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

您可以查看 Microsoft Office 文件的 MIME 类型列表 here

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

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