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''))
Lo que puedes hacer es:
- iniciar una pantalla virtual (ver Xvfb )
- inicia el navegador
Firefox
con las preferencias configuradas para guardar automáticamente los archivoscsv
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: