《selenium2 python 自动化测试实战》(14)——下载文件
Posted 孟船长
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《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的意思,都是与下载有关的选项:
《selenium2 python 自动化测试实战》——切换窗口
《selenium2 python 自动化测试实战》(13)——上传文件
《selenium2 python 自动化测试实战》——键盘事件
《selenium2 python 自动化测试实战》(21)——unittest单元测试框架解析