with tutorial framework español djangoproject desde con cero applications selenium phantomjs casperjs headless-browser

selenium - framework - tutorial django



¿Prueba de navegador sin cabeza con funcionalidad de descarga? (3)

He estado buscando una solución para hacer pruebas sin cabeza en osx. Pero necesito la capacidad de guardar los archivos devueltos por el servidor.

He probado Selenium, Phantomjs, Casperjs y he investigado todo lo que pude encontrar en línea.

ninguno de ellos admite la descarga. ¿Me estoy perdiendo de algo? ¿hay algún navegador sin cabeza / frameworks de prueba que soporte descargas?


Uso el comando OSX selenium + wget para realizar descargas.

Aquí hay una muestra de código:

new_driver = webdriver.Firefox() new_driver.get(url) for element in new_driver.find_elements_by_tag_name(''img''): os.system(''wget '' + element.get_attribute(''src'').rstrip(''/n''))


Awesomium es un navegador sin cabeza y tiene un administrador de descargas con controladores de eventos de descarga. Aquí está el enlace para la documentación.


Lo que puedes hacer es:

  • iniciar una pantalla virtual (ver Xvfb )
  • inicia el navegador Firefox con las preferencias configuradas para guardar automáticamente los archivos csv

Ejemplo de trabajo en python con comentarios adicionales (usando pyvirtualdisplay xvfb wrapper):

from os import getcwd import time from pyvirtualdisplay import Display from selenium import webdriver # start the virtual display display = Display(visible=0, size=(800, 600)) display.start() # configure firefox profile to automatically save csv files in the current directory fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList", 2) fp.set_preference("browser.download.manager.showWhenStarting", False) fp.set_preference("browser.download.dir", getcwd()) fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/csv") browser = webdriver.Firefox(firefox_profile=fp) browser.get(''http://www.nationale-loterij.be/nl/onze-spelen/lotto/resultaten'') # check the option browser.find_element_by_id(''corporatebody_3_corporategrid93961a8f9b424ed6bd0697df356d9483_1_rblType_0'').click() # click the link browser.find_element_by_name(''corporatebody_3$corporategrid93961a8f9b424ed6bd0697df356d9483_1$btnDownload'').click() # hardcoded delay for waiting a file download (better check for the downloaded file to appear on the disk) time.sleep(2) # quit the browser browser.quit() # stop the display display.stop()

Ver también: