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);
我正在制作一个程序,使用 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);