Skip to content

Instantly share code, notes, and snippets.

@remarkablemark
Last active December 24, 2019 23:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save remarkablemark/64a2603eca56df1baa835f64c8297472 to your computer and use it in GitHub Desktop.
Save remarkablemark/64a2603eca56df1baa835f64c8297472 to your computer and use it in GitHub Desktop.
Download file with Chrome using WebDriverJS

Install

$ git clone https://gist.github.com/64a2603eca56df1baa835f64c8297472.git download && cd download
$ npm install

Usage

  1. Start server (in a shell):
    $ npm run server
  2. Run script (in another shell):
    $ npm start
<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"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment