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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/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()

  

posted @   局长  阅读(365)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示