Las aplicaciones web generan 3 tipos diferentes de ventanas emergentes; a saber,
1| JavaScript PopUps
2| Browser PopUps
3| Native OS PopUps [e.g., Windows Popup like Upload/Download]
En general, las ventanas emergentes de JavaScript son generadas por el código de la aplicación web. Selenium proporciona una API para manejar estas ventanas emergentes de JavaScript, como Alert
.
Finalmente, la forma más sencilla de ignorar la ventana emergente del navegador y descargar archivos es haciendo uso de los perfiles del navegador; Hay dos formas de hacer esto:
- Involucrar manualmente cambios en las propiedades del navegador (o)
- Personalizar las propiedades del navegador usando profile setPreference
Método 1
Antes de comenzar a trabajar con ventanas emergentes en los perfiles del navegador, asegúrese de que las opciones de descarga estén configuradas de forma predeterminada en Guardar archivo.
(Abra Firefox) Herramientas> Opciones> Aplicaciones
Método2
Utilice el siguiente fragmento y realice modificaciones cuando sea necesario.
FirefoxProfile profile = new FirefoxProfile();
String path = "C:\\Test\\";
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", path);
profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream");
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.manager.focusWhenStarting", false);
profile.setPreference("browser.download.useDownloadDir", true);
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
profile.setPreference("browser.download.manager.closeWhenDone", true);
profile.setPreference("browser.download.manager.showAlertOnComplete", false);
profile.setPreference("browser.download.manager.useWindow", false);
profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
profile.setPreference("pdfjs.disabled", true);
driver = new FirefoxDriver(profile);