《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版本: 回车,就可以安装了. 本来想和大家说如何跳过验证码进行登录的,结果好多朋友加我问我环境配置的问题,所以 ...
随机推荐
- js 图片查看器
将以前用angular 写的 自定义指令 封装成 插件,无需引用jquery.angular. 下载下来即可查看效果. github网址: https://github.com/wzhGitH/img ...
- [Spring]Spring Mvc实现国际化/多语言
1.添加多语言文件*.properties F64_en_EN.properties详情如下: F60_G00_M100=Please select data. F60_G00_M101=Are yo ...
- Django框架学习笔记(windows环境下安装)
博主最近开始学习主流框架django 网上大部分的安装环境都linux的 由于博主在windows环境下已经有了 Pycharm编辑器 ,所以决定还是继续在windows环境下学习 首先是下载 链接 ...
- CentOS6.6系统中安装配置Samba的教程
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通 ...
- 【Python】装饰器理解
以下文章转载自:点这里 关于装饰器相关的帖子记录在这里: 廖雪峰, thy专栏, stackflow Python的函数是对象 简单的例子: def shout(word="yes" ...
- Highcharts 散点图
Highcharts 散点图 配置 chart 配置 配置 chart 的 type 为 'scatter' .chart.type 描述了图表类型.默认值为 "line". ch ...
- iptables详解(7):iptables扩展之udp扩展与icmp扩展
前文中总结了iptables的tcp扩展模块,此处,我们来总结一下另外两个跟协议有关的常用的扩展模块,udp扩展与icmp扩展. udp扩展 我们先来说说udp扩展模块,这个扩展模块中能用的匹配条件比 ...
- tcping的安装和使用
1.LINUX安装方法: 编译安装下载地址: http://linuxco.de/tcping/tcping.html tar zxvf tcping-1.3.5.tar.gz cd tcping-1 ...
- Algorithm1: 全排列
全排列 思想: 这是一个全排列问题,需要使用递归实现,将数组中的所有元素和第一个元素交换,求后面n-1个元素的全排列. 按照这个条件递归下去,知道元素的个数只有一个的时候,输出所有 ...
- android mvp RxJava 框架结构分析
一个MVP结构:M是model,V是Fragment,P是提供者,P持有V和Model,控制获取数据并给V赋值.(结合了RXJava Retrofit和okHttp)