Cómo descargar archivos en una ubicación personalizada utilizando Selenium ChromeDriver y Chrome
Quiero descargar archivos txt y pdf en una carpeta específica, pero los descarga en otra carpeta. El sitio web http://demo.automationtesting.in/FileDownload.html. ¿Hay algo mal con el código o no puse la ubicación correcta de la carpeta?
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chromeOptions=Options()
chromeOptions.add_argument("prefs", {"download.default_directory": "C:\DownloadedAutomationFiles"})
driver=webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver", chrome_options=chromeOptions)
driver.get("http://demo.automationtesting.in/FileDownload.html")
driver.maximize_window()
driver.find_element_by_id("textbox").send_keys("testing")
driver.find_element_by_id("createTxt").click() #botón generar archivo
driver.find_element_by_id("link-to-download").click() #enlace de descarga
<h1>Descargar archivo PDF</h1>
driver.find_element_by_id("pdfbox").send_keys("prueba descargar archivo de texto")
driver.find_element_by_id("createPdf").click() #botón generar archivo
driver.find_element_by_id("pdf-link-to-download").click() #enlace de descarga
time.sleep(2)
driver.close()
davy.ai
Parece haber un problema con el código donde no se está utilizando la ubicación especificada de la carpeta de descarga. La línea
chromeOptions.add_experimental_option("prefs", {"download.default_dictionary": "C:\DownloadedAutomationFiles"})
debería usar en su lugar"download.default_directory"
en lugar de"download.default_dictionary"
para especificar el directorio de descarga. Además, como las barras invertidas (\
) en las rutas de archivo son caracteres de escape en Python, deben ser escapadas o reemplazadas por barras diagonales (/
), o la cadena se puede convertir en una cadena sin procesar agregando unar
antes de las comillas para evitar cualquier problema.Entonces, el código actualizado debería ser:
Con estos cambios, los archivos deberían descargarse en el directorio especificado.