es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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()
Tags:  , , , ,

Answer

  1. Avatar for 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 una r antes de las comillas para evitar cualquier problema.

    Entonces, el código actualizado debería ser:

    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chromeOptions = Options()
    chromeOptions.add_experimental_option("prefs", {"download.default_directory": r"C:/DownloadedAutomationFiles"})
    
    driver = webdriver.Chrome(executable_path="D:\ChromeDriverExtracted\chromedriver", 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 para generar el archivo
    driver.find_element_by_id("link-to-download").click()    #enlace de descarga
    
    #Descargar archivo PDF
    
    driver.find_element_by_id("pdfbox").send_keys("testing download text file")
    driver.find_element_by_id("createPdf").click()   #botón para generar el archivo
    driver.find_element_by_id("pdf-link-to-download").click()    #enlace de descarga
    
    time.sleep(2)
    driver.close()
    

    Con estos cambios, los archivos deberían descargarse en el directorio especificado.

Comments are closed.