tag - Descargando el archivo a la ubicación especificada con Selenium y python
tag name selenium (2)
Ok, hasta ahora tengo mi programación yendo al sitio web del que quiero descargar el enlace y seleccionándolo, 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 compilació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 deDownloads
-
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 losmime-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:
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.