#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/2/13 18:59
# @Author : solo
# @Site :
# @File : webdriver_11_6.py
# @Software: PyCharm
#无人工干预地自动下载某个文件
#目的:在网页上下载时,通常需要人为设定下载文件并选择保存路径,这样就无法实现完全自动下载的工程。以下示例是基于firefox浏览器的
#全自动化文件下载操作,脚本执行后会将文件保存到指定目录的文件夹下。
from selenium import webdriver
import unittest,time
class TestDemo(unittest.TestCase):
def setUp(self):
#创建一个firefoxprofile示例,用于存放自定义配置
profile = webdriver.FirefoxProfile()
#指定下载路径,默认只会自动创建一级目录,如果指定了
#多级不存在的目录,将会下载到默认路径
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.manage.showWhenStaring",False)
#设定为False会把下载框进行隐藏
profile.set_preference("browser.download.manager.useWindow",False)
#默认值为True,设定为False表示不获取焦点
profile.set_preference("browser.download.manager.alertonEXEopen",False)
#
#
#
profile.set_preference("browser.helperApps.neverAsk.openfile",
"application/pdf")
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",
"application/zip,application/octet-stream")
profile.set_preference("browser.download.manager.showAlertonComplete",False)
profile.set_preference("browser.download.manager.closeWhenDone",False)
self.driver = webdriver.Firefox(executable_path="C:\\webdriver_firefox_driver",
firefox_profile=profile)
def test_dataPicker(self):
#访问webdriver的驱动firefox的驱动文件下载网址
urll = "https://github.com/mozilla/geckodriver/releases"
self.driver.get(urll)
self.driver.find_element_by_xpath\
('//strong[.="geckodriver -v0.11.1 - win64.zip"]').click()
#等待文件加载
time.sleep(10)
url = "https://www.python.org/downloads/release/python - 2712/"
self.driver.get(url)
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()