《selenium2 python 自动化测试实战》(14)——下载文件

说下载文件之前,我再和大家说一下用cookie登录的事,既然我们用cookie登录,那么传过去的cookie肯定是要和对应的网站完全一致的,注意,是包括大小写哦,本来我也是不知道,我用这个方法登录自己公司的网站,fiddler抓包和代码如下:
# coding: utf-8
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get("https://www.yiyao.cc")
driver.add_cookie({'name': '_ui_',
'value': 'oVTQORvHOLSJQIxA==',
'domain': '我公司的网站.cc'})
driver.add_cookie({'name': '_ut_',
'value': 'otrftkqcwJoQ4F2Q==',
'domain': '我公司的网站.cc'})
sleep(3)
driver.refresh()
这时候我怎么跑就是不能实现自动登录,我也很奇怪,后来注意到fiddler里的domain是大写的D,也就是Domain,于是我抱着试一下的态度去把代码里的domain字段改成了Domain,竟然成功了。。所以在这里也提醒一下大家,道理都是想通的,如果你发现自己登录不上去,那肯定有哪里写的不太准确,当然,前提是你们公司的网站在安全方面做得不是很完善,如果安全做得非常好的,登不上去就别问我了,我也不会
。
下载文件
下载文件的代码网上一找一大堆,但是要想找能写下载例子的网站就不容易找了……找到了还得调通了,真的很麻烦……先抱怨两句![]()
先看代码:
# coding: utf-8
from selenium import webdriver
from time import sleep
profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', r'C:\Users\DELL\Desktop')
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
# 下载的文件格式是xlsx
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("https://www.yiyao.cc")
driver.add_cookie({'name': '_ui_',
'value': '1ItEQ8yIFCS+kOCim0jLfw==',
'Domain': 'yiyao.cc'})
driver.add_cookie({'name': '_ut_',
'value': '3Gl6h8mw0JvBy5LDCxtT+g==',
'Domain': 'yiyao.cc'})
sleep(3)
driver.refresh()
sleep(3)
# 去掉target="_blank"属性
js = 'document.getElementsByClassName("orange")[0].target="";'
driver.execute_script(js)
# 点击卖家中心
driver.find_element_by_xpath(".//*[@id='userType']/a[2]").click()
sleep(1)
# 点击商品管理
driver.find_element_by_xpath(".//*[@id='firstpane']/h3[2]").click()
sleep(2)
# 点击商品发布
driver.find_element_by_xpath(".//*[@id='firstpane']/div[2]/a[2]").click()
# 点击批量发布
driver.find_element_by_xpath(".//*[@id='title-tabs']/span[2]").click()
sleep(2)
# 点击“否”
driver.find_element_by_xpath(".//*[@id='down_no_code_template']").click()
# 接下来进入下载流程
以上代码就是登录网站,点击按钮后进行下载的全部流程了。我们来解释一下:
上面的一大堆set_preference其实就是Firefox浏览器的设置,那么我们可以在火狐浏览器里找到这些名字:
在火狐浏览器地址栏输入:about:support,然后下拉,找到:
看,set_preference的那些key值就是取的这里面的值,也就是set_preference的操作就是修改这些配置的值。我把百度来的给大家贴下来,下面就是常用的这些key的意思,都是与下载有关的选项:
browser.download.dir
相同类型的文件上一次的下载保存位置。
browser.download.folderList
设置Firefox的默认下载文件夹。0是桌面;1是“我的下载”;2是自定义。这一选项你可以直接在“首选项-下载-将所有文件保存在此文件夹”中修改。但请注意,如果你在“首选项-下载-保存每个文件夹前询问存储位置“(也就是要求弹出下载对话框),那么本选项无效。
browser.download.manager.showWhenStarting
当下载开始时是否显示下载对话框,Ture是显示。这一项同样可以在“首选项-下载”中更改
给大家一个网站,这里面有大部分的解释,愿意看的可以看看:
https://www.cnblogs.com/shpchan/archive/2010/01/14/1647596.html
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
这句的意思是设置保存的格式,注意,格式必须与你下载的文件相同,这个值(就是传的第二个参数)就是保存文件的MIME类型,常用的有:
docx
application/vnd.openxmlformatsofficedocument.wordprocessingml.document
xlsx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xls
application/vnd.ms-excel
doc
application/msword
pdf
application/pdf
文件一般就这几种吧,大家在下载对应文件的时候只要将上面代码第二个参数换成对应的文件类型的就可以直接跳过弹出框自动下载了。给大家一个网址,需要的时候可以去这个网址查一下对应文件的MIME类型:
https://www.cnblogs.com/ingstyle/p/5711410.html
以上代码船长运行过了,没有问题的~~
至于修改属性js语句很快就会和大家讲。其实百度一大堆
。
刚才给大家那两个网址建议大家保存一下,如果不保存,那就一直关注我的公众号吧,只要你写selenium自动化肯定有一天会用到的,嘿嘿。
找有下载功能的网站,加上调试代码,这周工作又加班比较多,导致这么长时间才更新。代码都是我已经验证过可以成功运行的,这个大家可以放心。
如果大家要试一下的话建议自己去找别的网站,或者用自己公司的网站(如果也有下载的话),因为这个网站是要认证的,比较麻烦。我也找了好长时间![]()
如果遇到问题留言就可以~~还有,谢谢@川的打赏~~![]()
我想给自己吹一波
——如果你想找技术比船长好的人那很容易,一找一大把,随便拉过来一个人技术可能就比我好
,可是你要找大半夜十二点多还给你耐心解决问题的人,那就不容易了~~船长就是一个,嘿嘿……哈哈![]()
大家周末愉快~~~
微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

《selenium2 python 自动化测试实战》(14)——下载文件的更多相关文章
- selenium2 python自动化测试实战(回归测试)
selenium2 python自动化测试实战 最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重 ...
- 船长带你看书——《selenium2 python 自动化测试实战》(1)
有很多selenium的教程,你没有从头看,当你看的时候已经很难跟上作者的节奏了.现在,你有机会再从头学一次了.从今天开始,船长会从最基本的知识开始,和大家一起学selenium.能不能跟着一起就看大 ...
- 《selenium2 python 自动化测试实战》(13)——上传文件
看代码: # coding: utf-8 from selenium import webdriver from time import sleep driver = webdriver.Firefo ...
- Selenium2+Python自动化测试实战
本人在网上查找了很多做自动化的教程和实例,偶然的一个机会接触到了selenium,觉得非常好用.后来就在网上查阅各种selenium的教程,但是网上的东西真的是太多了,以至于很多东西参考完后无法系统的 ...
- 《selenium2 python 自动化测试实战》(4)——鼠标事件
鼠标事件包含在ActionChains类中,导入时只需要: from selenium.webdriver.common.action_chains import ActionChains 导入类即可 ...
- 《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析
unittest是展开自动化测试的基础——这个框架很重要! 我们先自己写一个测试类: 1.被测试类 Widthget.py: # coding: utf-8 class Widthget: de ...
- 《selenium2 python 自动化测试实战》(20)——Selenium工具介绍
(一)Selenium IDE Firefox的一个插件,有助于我们理解测试框架.在附加组件里搜索下载,一般搜的结果里前几个都不是,得点那个查看更多才行,找到这个: 安装以后浏览器工具栏会有: 安装好 ...
- 《selenium2 python 自动化测试实战》(17)——几个cookies操作
之前我们已经学过利用cookies跳过验证码登录了,那时候我们用的方法是add_cookie()方法,这里再给大家介绍两个,一般情况下我们用不到,了解一下就可以,而且如果真的用到的时候百度也很快的: ...
- 《selenium2 python 自动化测试实战》(11)——selenium安装版本
先和大家说一下selenium环境的问题,大家可以在cmd里先看一下自己的selenium版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以 ...
随机推荐
- Memcached CAS 命令
Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作 它仅在当前客户端最后一次取值后,该key 对应 ...
- Swoft 快速上手小贴士
IDE一定要装注解插件PHP Annotations Request和Response里的with...开头的方法会clone $this, 而不是修改本实体, 所以设置Cookie之类的时候要$re ...
- maven笔记(2)
项目管理利器(Maven)——maven的生命周期和插件Maven的生命周期大概如下:clean compile test package install这几个命令对应了一个项目的完整的构建过程,这几 ...
- JavaScript高级与面向对象
对象:任何事物都可以看作是对象. 1.面向对象与面向过程的概念 面向过程:凡是自己亲力亲为,自己按部就班的解决现有问题. 面向对象:自己充当一个指挥者的角色,指挥更加专业的对象帮我解决问题. 联系:面 ...
- python脚本7_打印九九乘法表
#打印九九乘法表 for i in range(1,10): s = "" for j in range(1,i+1): s += str(j) + '*' + str(i) + ...
- JXLS导出Excel(模板导出)
1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...
- Java输出double类型中的最小正数和最大正数
这是<写给大忙人看的java核心技术>中的一道练习题. 1. 输出最大正数值 System.out.println(Double.MAX_VALUE); 直接输出包装类Double的MAX ...
- LM3S之boot loader学习笔记-2
LM3S之boot loader学习笔记-2 彭会锋 () 上一篇中介绍了bootloader的基础知识,对于bootloader的作用和如何编写bootloader也有了大概的了解了,这一篇主要讲解 ...
- Graphviz(转载)
简述 原文: http://www.tuicool.com/articles/vy2Ajyu 本文翻译自 Drawing Graphs using Dot and Graphviz 1. 许可 Cop ...
- nyoj115——裸dijksta(点之间最短路)
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...