如何在绕过文件对话框的同时使用硒下载CSV文件

问题描述

我一直试图在Linux-Mint的NodeJS环境中使用Firefox的Selenium Webdriver(geckodriver)访问带有CSV文件的URL,以将其下载到特定目录中。

这是我的代码:

const {Builder} = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
const path = require('path');

const options = new firefox.Options();

options.setPreference('browser.download.dir',path.resolve(__dirname));
options.setPreference('browser.download.folderList',2);
options.setPreference('browser.helperApps.neverAsk.saveToDisk','application/x-csv');

function example(){
  let driver = new Builder().forBrowser('firefox').setFirefoxOptions(options).build();
  driver.get('http://insight.dev.schoolwires.com/HelpAssets/C2Assets/C2Files/C2ImportCalEventSample.csv');
}

example();

如您所见,我将浏览器选项正确设置为browser.helperApps.neverAsk.saveToDisk,以便能够绕过对话框。但是,无论我做什么,仍然会出现对话框。我没有在Windows上尝试过此代码,但是出于我的目的,它需要在Linux上工作。

我错过了什么吗?需要添加或更改某些首选项吗?还是对我当前的环境不起作用?

在此先感谢您提供的帮助。

解决方法

如果您只是从链接下载文件,为什么需要硒?

一种非常简单的方法就是通过http获取文件并将其保存到文件。

const http = require('http');
const fs = require('fs');

const file = fs.createWriteStream("C2ImportCalEventSample.csv");
const request = http.get("http://insight.dev.schoolwires.com/HelpAssets/C2Assets/C2Files/C2ImportCalEventSample.csv",function(response) {
  response.pipe(file);
});

如果您必须使用硒,请在评论中让我知道,我将尝试使用硒解决问题的方法。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...