Though downloading files through PhantomJS might be difficult, but we can use PhantomJS to get us to download links and fetch all needed cookies such as CSRF(Cross-site-request-forgery) tokens and so on. And then we can use requests to download it like this:
import requests
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('page_with_download_link')
download_link = driver.find_element_by_id('download_link')
session = requests.Session()
cookies = driver.get_cookies()
for cookie in cookies:
session.cookies.set(cookie['name'], cookie['value'])
response = session.get(download_link)
And now in response.content actual file content will appear. We can then write in the file using open method or perform other tasks which we want to(like writing) by automation testing.