2017-05-25 76 views
1

我正在制作一个程序,使用python中的selenium webdriver自动下载数据。当我点击弹出式对话框中的“下载”按钮时Windows弹出窗口交互使用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())  

但是现在我不知道如何与此窗口交互?

回答

1

经过这么许多调查结果和研究,我得到以下代码,这将有助于这种情况。

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

尝试各种SO解决方案后,我尝试'pdfjs.disabled'如你所说,它的工作。但对我来说,它只能与'browser.helperApps.neverAsk.saveToDisk'一起使用,其他设置不需要。 – s2t2

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文件here

+0

使用此MIME后也出现相同的弹出窗口。你能告诉我另一种解决方案吗? – user8023364

相关问题