Headless browser testing with download functionality? Headless browser testing with download functionality? selenium selenium

Headless browser testing with download functionality?


What you can do is:

  • start a virtual display (see Xvfb)
  • start up Firefox browser with preferences configured to automatically save csv files

Working example in python with additional comments (using pyvirtualdisplay xvfb wrapper):

from os import getcwdimport timefrom pyvirtualdisplay import Displayfrom selenium import webdriver# start the virtual displaydisplay = Display(visible=0, size=(800, 600))display.start()# configure firefox profile to automatically save csv files in the current directoryfp = 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 optionbrowser.find_element_by_id('corporatebody_3_corporategrid93961a8f9b424ed6bd0697df356d9483_1_rblType_0').click()# click the linkbrowser.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 browserbrowser.quit()# stop the displaydisplay.stop()

See also:


I use on OSX selenium + wget command to perform downloads.

Here it is a sample of code:

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'))