Descargando el archivo a la ubicación especificada con Selenium y python

Ok, hasta ahora tengo mi progtwigción yendo al sitio web desde el que quiero descargar el enlace y seleccionarlo, luego aparece el cuadro de diálogo de Firefox y no sé qué hacer. Quiero guardar este archivo en una carpeta en mi escritorio. Estoy usando esto para una comstackción nocturna, así que necesito que esto funcione. Por favor ayuda.

Aquí está mi código que captura el enlace de descarga del sitio web:

driver = web driver.Firefox() driver.implicitly_wait(5) driver.get("Name of web site I'm grabbing from") driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click() 

Necesitas hacer que Firefox guarde este tipo de archivo en particular automáticamente.

Esto se puede lograr configurando la preferencia browser.helperApps.neverAsk.saveToDisk :

 from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", 'PATH TO DESKTOP') profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip") driver = webdriver.Firefox(firefox_profile=profile) driver.get("Name of web site I'm grabbing from") driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]").click() 

Más explicación:

  • browser.download.folderList le dice que no use el directorio predeterminado de Downloads
  • browser.download.manager.showWhenStarting mostrar el progreso de la descarga
  • browser.download.dir establece el directorio para descargas
  • browser.helperApps.neverAsk.saveToDisk le dice a Firefox que descargue automáticamente los archivos de los mime-types seleccionados

Puede ver todas estas preferencias en about:config en el navegador. También hay una página de documentación muy detallada disponible aquí: Acerca de: entradas de configuración .

Además, en lugar de utilizar el enfoque xpath , usaría find_element_by_partial_link_text() :

 driver.find_element_by_partial_link_text("DEV.tgz").click() 

Ver también:

  • Acceso al diálogo de descarga de archivos en Firefox.
  • Firefox + Selenium WebDriver y descarga un archivo csv automáticamente

Si la aplicación se genera dinámicamente (tipos mime), el navegador Chrome será un mejor enfoque, ya que Chrome no abrirá la ventana emergente de descarga de archivos. Pero la opción de descarga múltiple debe estar habilitada si necesita varias descargas.