一:主要内容

  • 下载效果展示
  • 代码内容展示
  • saveToDisk不生效说明,即文件没有下载下来解决办法

二:展示效果

1.下载效果展示

用selenium3无人工干预的自动下载该文件到指定路径下,如:D:\downloadFiles

2.代码展示

 package cn.gloryroad;

 import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test; public class TestDemo {
//设定下载文件存储的文件路径
public static String downloadFilePath = "D:\\downloadFiles";
WebDriver driver;
String baseUrl;
JavascriptExecutor js; @BeforeMethod
public void beforeMethod() {
baseUrl="http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/35.0b8/win32/zh-CN/";
} @AfterMethod
public void afterMethod() {
driver.quit();
} @Test
public void testdataPicker() throws Exception {
System.setProperty("webdriver.firefox.bin","D:\\firefox\\firefox.exe");
driver = new FirefoxDriver(firefoxDriverOptions()); driver.get(baseUrl);
//单击包含“Stub”关键字的下载链接
driver.findElement(By.partialLinkText("Stub")).click();
//设定10秒钟的延迟,让程序下载完成。如果网络下载很慢,可以根据预估的下载完成时间,
//设定暂停时间
try{
Thread.sleep(10000);
}catch(Exception e){
e.printStackTrace();
}
} public static FirefoxOptions firefoxDriverOptions() throws Exception {
FirefoxOptions options = new FirefoxOptions();
//声明一个 profile 对象
FirefoxProfile profile = new FirefoxProfile();
//设置 Firefox 的browser.download.folderList属性为 2
//如果没有进行显示设定,则使用默认值 1,表示下载文件保存在“下载”文件夹
//设定为 0,则下载文件会被保存在用户的桌面上
//设定为 2,则下载文件会被保存在指定的文件夹下
profile.setPreference("browser.download.folderList",2);
//browser.download.manager.showWhenStarting的属性默认值为 true
//设定为 true,则在用户启动下载的时候显示 Firefox 浏览器的文件下载窗口
//设定为 false,则在用户启动下载的时候不显示 Firefox 浏览器的文件下载窗口
profile.setPreference("browser.download.manager.showWhenStarting",false);
Thread.sleep(5000);
//browser.download.dir设定下载文件保存的目录
profile.setPreference("browser.download.dir",downloadFilePath);
//browser.helperApps.neverAsk.openFile表示直接打开下载文件,不显示确认框
//默认值为空字符串,下行代码行设定了多种文件的 MIME类型,例如,application/x-msdownload
//表示.exe类型的文件,application/excel表示 Excel 类型的文件
profile.setPreference("browser.helperApps.neverAsk.openFile",
"application/octet-stream,application/exe,text/csv, application/pdf, application/x-msexcel,application/excel,application/x-excel, application/excel,application/x-excel,application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml,application/excel,application/x-msdownload");
//browser.helperApps.neverAsk.saveToDisk表示下载文件是否直接保存到磁盘
//默认值为空字符串,下行代码行设定了多种文件的 MIME类型,例如,application/x-msdownload
//表示.exe类型的文件,application/excel表示 Excel 类型的文件
profile.setPreference("browser.helperApps.neverAsk.saveToDisk",
"application/octet-stream,application/exe,text/csv,application/pdf,application/x-msexcel,application/excel,application/x-excel, application/excel,application/x-excel,application/excel, application/vnd.ms- excel,application/x-excel,application/x-msexcel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml,application/excel,text/x-c,application/x-msdownload");
// browser.helperApps.alwaysAsk.force对于未知的 MIME 类型文件会弹出窗口
// 让用户处理,默认值为true,设定为false表示不会记录打开未知 MIME 类型
// 文件的方式
profile.setPreference("browser.helperApps.alwaysAsk.force",false);
//下载.exe文件弹出警告,默认值是 true,设定为false 则不会弹出警告框
profile.setPreference("browser.download.manager.alertOnEXEOpen",false);
// browser.download.manager.focusWhenStarting设定下载框在下载时会获取焦点
// 默认值为 true,设定为 false 表示不获取焦点
profile.setPreference("browser.download.manager.focusWhenStarting",false);
// browser.download.manager.useWindow设定下载是否显示下载框,默认值为true
// 设定为 false 会把下载框进行隐藏
profile.setPreference("browser.download.manager.useWindow",false);
// browser.download.manager.showAlertOnComplete设定下载文件结束后是否显示下载
// 完成提示框,默认值为 true,设定为 false 表示下载完成后不显示下载完成提示框
profile.setPreference("browser.download.manager.showAlertOnComplete",false);
// browser.download.manager.closeWhenDone设定下载结束后是否自动关闭下载框
// 默认值为true,设定为false 表示不关闭下载管理器
profile.setPreference("browser.download.manager.closeWhenDone",false); options.setProfile(profile);
return options;
} }

3.如果运行代码后发现你的文件弹窗还是弹出来了,文件并没有下载保存到指定的文件路径下,那么请检查下你的文件类型是否包含在上诉列出的文件类型之内,我之前遇到的问题是我要下载exe文件,然后给browser.helperApps.neverAsk.openFile和browser.helperApps.neverAsk.saveToDisk都加入了application/exe类型,但是运行代码后发现,保存文件的弹窗照样还是打开了,文件并没有被下载下来。

这个时候你就可以抓包或者通过浏览器的f12工具看下你下载文件的那个请求的响应数据的Content-Type是什么类型的,加入进去就好,如我上面的exe文件,用f12工具查看它的content-type类型为:application/x-msdownload

然后我在我的代码里设置的browser.helperApps.neverAsk.openFile和browser.helperApps.neverAsk.saveToDisk里加入该项application/x-msdownload即可,文件就能被下载成功了,其他文件类型按照同样的方法也可以解决。

 
 
 
 
 
 

selenium3 无人工干预地自动下载某个文件的更多相关文章

  1. webdriver高级应用- 无人工干预地自动下载某个文件

    在网页上下载文件时,通常需要人为设定下载文件并选择保持路径,这样就无法实现完全自动的下载过程.下面实现基于firefox浏览器的全自动化文件下载操作: #encoding=utf-8 from sel ...

  2. IDM下载器添加支持自动下载的文件类型

    不知道各位读者老爷有没有试过IDM下载器的自动下载功能,对于经常需要下载素材资源的朋友来说,一个个的选择图片或者其他什么素材来下载也是够烦的,IDM的自动下载功能可谓是十分好用,而且自动下载+批量下载 ...

  3. 【转】Python编程: 多个PDF文件合并以及网页上自动下载PDF文件

    1. 多个PDF文件合并1.1 需求描述有时候,我们下载了多个PDF文件, 但希望能把它们合并成一个PDF文件.例如:你下载的数个PDF文件资料或者电子发票,你可以使用python程序合并成一个PDF ...

  4. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  5. 【转】Java生成plist下载ipa文件

    我们在上传ipa想要安装的时候必须要通过plist文件去下载,并且还要遵循 itms-services协议. 意思就是,第一步我们要生成一个plist文件, 第二步生成一个html文件,用来指向pli ...

  6. yandex 图片自动下载

    yandex 图片自动下载命令行程序 一个在 yandex 上搜索图片并下载到本地的 node cli 程序. 使用帮助: $0 <搜索关键词> [-t=超时(默认 1000)] [-r ...

  7. Python selenium 文件自动下载 (自动下载器)

    MyGithub:https://github.com/williamzxl 最新代码已经上传到Github,以下版本为stupid版本. 由于在下载过程中需要下载不同文件,所以可以把所有类型放在Va ...

  8. selenium实现自动下载文件

    #coding:utf-8'''说明:导出'''from selenium import webdriverfrom public.highlightElement import highlightf ...

  9. top 自动执行的shell脚本中,使用top -n 1 > log.txt, 上电自动执行,文件无输出

    . 自动执行的shell脚本中,使用top -n > log.txt, 上电自动执行,文件无输出,使用一下命令解决: //usr/bin/top -d -n -b > log.txt 如果 ...

随机推荐

  1. Java类、属性、方法、构造方法、块、内部类的基本概念

    类 概念:类相当于一个模板,里面定义了多个对象共同的属性和方法 基本结构:属性.方法.构造方法.块.内部类 声明形式:[访问权限修饰符][修饰符] class 类名 { 类体 } 属性 概念:存放对象 ...

  2. PAT甲级 1128. N Queens Puzzle (20)

    1128. N Queens Puzzle (20) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The & ...

  3. hdu 5087 次长升序串的长度

    http://acm.hdu.edu.cn/showproblem.php?pid=5087 求数列次长升序串的长度 还是dp求最长升序串的长度,再开一个数组记录对于dp值的串的个数 最后看一下最长字 ...

  4. Codeforces Round #264 (Div. 2) E. Caisa and Tree 树上操作暴力

    http://codeforces.com/contest/463/problem/E 给出一个总节点数量为n的树,每个节点有权值,进行q次操作,每次操作有两种选项: 1. 询问节点v到root之间的 ...

  5. AngularJS 过滤器 Filter

    过滤器实质是数据转换或过滤,把ViewMode中的数据转化成View层用户友好的信息.可以看做一个函数,负责接收输入,转换成输出,每次参数变化时,它就被执行,输出被视图View使用. 一.基本定义及其 ...

  6. spring boot 整合 mybatis 以及原理

    同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...

  7. iOS笔记之UIKit_UITextField

    - (void)viewDidLoad { [super viewDidLoad]; //建立在你已经遵守了<协议UITextFieldDelegate> self.numTF.deleg ...

  8. brctl命令

    有五台主机.其中一台主机装有linux ,安装了网桥模块,而且有四块物理网卡,分别连接同一网段的其他主机.我们希望其成为一个网桥,为其他四台主机(IP分别为192.168.1.2 ,192.168.1 ...

  9. ASP.NET Core开源地址

    https://github.com/dotnet/corefx 这个是.net core的 开源项目地址 https://github.com/aspnet 这个下面是asp.net core 框架 ...

  10. 11_python_闭包迭代器

    一.函数名(第一类对象) 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. def func(): print("呵呵") print(func) 结果: & ...