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

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

 

#encoding=utf-8
from selenium import webdriver
import unittest, timeclass TestDemo(unittest.TestCase):def setUp(self):# 创建一个FirefoxProfile实例,用于存放自定义配置profile = webdriver.FirefoxProfile() #chrome是另外的设置方法# 指定下载路径,默认只会自动创建一级目录,如果指定了# 多级不存在的目录,将会下载到默认路径profile.set_preference('browser.download.dir', 'd:\\iDownload')# 将browser.download.folderList设置为2,表示将文件下载到指定路径# 设置成2表示使用自定义下载路径;# 设置成0表示下载到桌面;设置成1表示下载到默认路径profile.set_preference('browser.download.folderList', 2)# browser.helperApps.alwaysAsk.force对于未知的 MIME 类型文件会弹出窗口# 让用户处理,默认值为true,设定为False表示不会记录打开未知 MIME 类型# 文件的方式profile.set_preference("browser.helperApps.alwaysAsk.force", False)# 在开始下载时是否显示下载管理器profile.set_preference('browser.download.manager.showWhenStarting',\False)# 设定为 False 会把下载框进行隐藏profile.set_preference("browser.download.manager.useWindow", False)# 默认值为 true,设定为 False 表示不获取焦点profile.set_preference("browser.download.manager. focusWhenStarting",\False)# 下载.exe文件弹出警告,默认值是 true,设定为False 则不会弹出警告框profile.set_preference("browser.download.manager.alertOnEXEOpen",\False)# browser.helperApps.neverAsk.openFile表示直接打开下载文件,不显示确认框# 默认值为空字符串,下行代码行设定了多种文件的 MIME类型,# 例如application/exe,表示.exe类型的文件,# application/excel表示 Excel 类型的文件profile.set_preference("browser.helperApps.neverAsk.openFile", \"application/pdf")# 对所给出文件类型不再弹出框进行询问,直接保存到本地磁盘profile.set_preference('browser.helperApps.neverAsk.saveToDisk', \'application/zip, application/octet-stream')# browser.download.manager.showAlertOnComplete设定下载文件结束后是否显示下#载完成提示框,默认为true,设定为False表示下载完成后不显示下载完成提示框profile.set_preference("browser.download.manager. showAlertOnComplete",\False);# browser.download.manager.closeWhenDone设定下载结束后是否自动# 关闭下载框,默认值为true,设定为False 表示不关闭下载管理器profile.set_preference("browser.download.manager.closeWhenDone",\False)# self.driver = webdriver.Ie(executable_path="c:\\IEDriverServer")# 启动浏览器时,通过firefox_profile参数# 将自动以配置添加到FirefoxProfile对象中self.driver = webdriver.Firefox(executable_path="e:\\geckodriver",\firefox_profile = profile)def test_dataPicker(self):# 访问WebDriver驱动Firefox的驱动文件下载网址url1 = "https://github.com/mozilla/geckodriver/releases"self.driver.get(url1)# 选择下载zip类型文件,使用application/zip指代此类型文件
        self.driver.find_element_by_xpath\('//strong[.="geckodriver-v0.19.1-arm7hf.tar.gz"]').click()# 等待加载下载文件time.sleep(10)# 访问Python2.7.12文件下载页面,下载扩展名为msi文件# 使用application/octet-stream来指明此类文件类型url = "https://www.python.org/downloads/release/python-2712/"self.driver.get(url)# 找到Python2.7.12下载页面中链接文字为“Windows x86-64 MSI installer”# 的链接页面元素,点击进行无人工干预的下载Python2.7.12解释器文件
        self.driver.find_element_by_link_text\("Windows x86-64 MSI installer").click()# 等待文件下载完成,根据各自的网络带宽情况设定等待相应的时间time.sleep(100)def tearDown(self):self.driver.quit()if __name__ == '__main__':unittest.main()

 

转载于:https://www.cnblogs.com/qingqing-919/p/8716176.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 使用mqtt实例,包括接收服务器推送以及上传数据到服务器

1、最方便的方法,使用dlc的module连接mqtt 步骤、1——导入dlc依赖和module //dlc_mqttmodule implementation project(:garbagerecyclebox)//dlc公库 implementation(com.github.DlcAndroidTeam123456:DlcCommonLibrary:1.0.31-simple) {exclude group: me.yokeyw…

18-Flutter移动电商实战-首页_火爆专区商品接口制作

1、获取接口的方法 在service/service_method.dart里制作方法。我们先不接收参数,先把接口调通。 Future getHomePageBeloConten() async{try{print(开始获取下拉列表数据.................);Response response;Dio dio new Dio();dio.options.contentTypeConten…

IIS Server Farms入门

概念了解 IIS Server Farms,实际上应该叫“Microsoft Web Farm Framework (WFF)”,依赖于“Web Platform Installer”才能安装,依赖于WebDeploy组件。可参见 Web Farm Framework Setting up a Server Farm with the Web Farm Framework 2.0 f…

flutter中的异步机制Future

饿补一下Flutter中Http请求的异步操作。 Dart是一个单线程语言,可以理解成物理线路中的串联,当其遇到有延迟的运算(比如IO操作、延时执行)时,线程中按顺序执行的运算就会阻塞,用户就会感觉到卡顿&#xff0…

前端学习(2825):vs开发小程序的插件

推荐以下四个插件 wechat-snippet 微信小程序代码辅助,代码片段自动完成minapp 微信小程序标签、属性的智能补全&#xff08;同时支持原生小程序、mpvue 和 wepy 框架&#xff0c;并提供 snippets&#xff09; 需要输入<才会触发标签补全 输入空格会触发对应标签的属性补全…

软件工程导论团队项目

软件工程导论团队项目&#xff08;速课小龙&#xff09; 一&#xff0e;团队介绍 1.团队成员 邓 旭 2016012068 &#xff08;组长&#xff09; 陈逸璇 2016012056 周紫伊 2016012043 谢月鹏 2016012066 洪泽芳 2016011988 葛金星 2016011992 2.队名&#xff1a;速课小龙 3.项…

java.util.ConcurrentModificationException

Android使用ArrayLists时报错&#xff1a;java.util.ConcurrentModificationException 报错原因是同一个集合被多个线程编辑了。导致集合元素丢失 解决方法—— 1、改有CopyOnWriteArrayList private List<MqttMsgBean> mqttMsgList new CopyOnWriteArrayList<>…

工作272:上传部分代码优化之两种上传视频的方式

两种预览视频的方式 <!--<div style"width: 500px;height: 400px" align"center"><iframe height498 width510 srchttp://xcom/uploads/2020-12-23/20201223125205_636.mp4 frameborder0 allowfullscreen></iframe></div>-->…

面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别

本文转载自 夏雪冬日&#xff1a;https://www.cnblogs.com/heyonggang/p/9112731.html 在实际面试过程中出现集合 Map 的概率接近 100%&#xff0c;可见不背上个 Map 相关的题目都不好意思去面试了。 如果你去面试&#xff0c;面试官不问你这个问题&#xff0c;你来找我^_^ 下…

tomcat,eclipse,sts绿色运行

D:\apache-tomcat-8.5.29\bin\setclasspath.bat 最开始处设置&#xff0c;可以是相对路径 set JAVA_HOMED:\Program Files\jdk1.8.0_131set JRE_HOMED:\Program Files\jdk1.8.0_131\jre 类eclipse配置文件 sts.ini -startup plugins/org.eclipse.equinox.launcher_1.4.0.v20161…

Android 设备启动时,APP应用自启动

添加一个开机监听即可 <!--开机广播权限--> <uses-permission android:name"android.permission.RECEIVE_BOOT_COMPLETED" /> public class BootReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) …

Eclipse中将java类打成jar包形式运行

记录一次帮助小伙伴将java类打成jar包运行 1、创建java project项目 file > new > project > java project 随便起一个项目名称&#xff0c;finish 完成后项目结构如下&#xff1a; 2、植入java类 将准备好的java类&#xff0c;植入项目中&#xff0c;在 src 目录中…

工作274:ele-图标使用

/*各个路由模块的建立*/ import Home from "/views/Home/Home"; import GlobalLayout from "/layout/GlobalLayout"; import Login from "/views/login/Login"; import Check from "/views/login/Check"; const SYSTEM_MANAGEMENT &q…

串口开发,数据类型转换——字符串转 byte[],byte[]转二进制,二进制转十进制转byte[],byte[]转十进制,byte[]拼接,校验

bytez转String /*** 字节数组转换成对应的16进制表示的字符串** param src* return*/ public static String bytes2HexStr(byte[] src) {StringBuilder builder new StringBuilder();if (src null || src.length < 0) {return "";}char[] buffer new char[2];…

Problem Collection II 构造

ARC 093B 转载于:https://www.cnblogs.com/Patt/p/8727324.html

了解栈内存堆内存

由于 java 有垃圾回收机制&#xff0c;所以往往不太会去关注栈堆的内存分配问题&#xff0c;直至OOM 一、了解栈堆概念 1、堆【存储对象创建实例】 程序开始运行时&#xff0c;JVM从OS获取一些内存&#xff0c;部分是堆内存。堆内存通常在存储地址的底层&#xff0c;向上排列…

dataBinding和retrofit的使用

1、dataBinding使用方法 1、配置dataBinding 2、创建layout类型xml布局文件 3、即可引用 ActivityMainBinding mainBinding; mainBinding DataBindingUtil.setContentView(this, R.layout.activity_main); mainBinding.testte.setText("abcccc"); 2、retrofit的…

使多个线程循环输出0-99-0-99

直接上代码&#xff0c;后面我也有一个问题&#xff0c;关于对象的notifyAll或者notify或者single或者singleAll&#xff0c;唤醒线程是顺序唤醒吗&#xff0c;我这里都是顺序输出了 关于公平与非公平锁的问题&#xff1f;唤醒是公平的&#xff1f;&#xff1f;&#xff1f;又没…