$ git clone https://gist.github.com/64a2603eca56df1baa835f64c8297472.git download && cd download
$ npm install
- Start server (in a shell):
$ npm run server
- Run script (in another shell):
$ npm start
test |
<a href="file.txt" download>Download File</a> |
require('chromedriver'); | |
const { access } = require('fs').promises; | |
const { homedir } = require('os'); | |
const { resolve } = require('path'); | |
const { Builder, By } = require('selenium-webdriver'); | |
const DOWNLOAD_PATH = resolve(homedir(), 'Downloads/file.txt'); | |
(async function() { | |
let driver; | |
try { | |
driver = await new Builder().forBrowser('chrome').build(); | |
await driver.get('http://localhost:8000/'); | |
const link = await driver.findElement(By.css('a')); | |
await link.click(); | |
while (true) { | |
try { | |
await access(DOWNLOAD_PATH); | |
break; | |
} catch (err) { | |
await driver.sleep(50); | |
} | |
} | |
} catch (err) { | |
console.error(err); | |
} finally { | |
await driver.quit(); | |
} | |
})(); |
{ | |
"scripts": { | |
"start": "node index.js", | |
"server": "python -m SimpleHTTPServer" | |
}, | |
"dependencies": { | |
"chromedriver": "^78.0.1", | |
"selenium-webdriver": "^4.0.0-alpha.5" | |
}, | |
"engines": { | |
"node": ">=12" | |
} | |
} |