1.要使用右键另存,需要先按照第三方工具AutoIt:

链接: https://pan.baidu.com/s/12aBBhOOTmyQpH9hukt0XGA 密码: fcdk

2.创建一个名为loadFile.au3的AutoItScript编辑器,内容如下:

  1. 新建一个名为loadFile.au3AutoItScript编辑器,文件具体内容如下:
  2. ;ControlFocus("title","text",controlID)
  3. ;表示将焦点切换到标题为title窗体中的controlID
  4. ;Edit1表示第一个可以编辑的实例
  5. ;title表示弹出的Window窗口标题,不同浏览器的标题可能不一样
  6. ControlFocus("请输入要保存的文件名...","","Edit1")
  7.  
  8. ;等待10秒以便window窗口加载成功
  9. WinWait("[CLASS:#32770]","",10)
  10.  
  11. ;将焦点切换到Edit1输入框中
  12. ControlFocus("另存为","","Edit1")
  13.  
  14. ;等待2
  15. Sleep(2000)
  16.  
  17. ;将要下载的文件名及路径写入Edit1编辑框中
  18. ControlSetText("另存为","", "Edit1", "d:\iDownload\Firefox Setup 35.0b8.exe")
  19.  
  20. Sleep(2000)
  21.  
  22. ;点击窗体中的第一个按钮,也就是保存按钮
  23. ControlClick("另存为","","Button1")
  24. 保存后将该文件编译成exe文件,并存放到本地磁盘。

3.将该内容保持后,编译成exe文件,并存放到本地磁盘。

保存后的内容可下载文件:

链接: https://pan.baidu.com/s/13OWAiVMuSy_fW8PXTe_f5Q 密码: ry4k

4.编写python代码,实现右键保存:

  1. # encoding=utf-8
  2. from selenium import webdriver
  3. import unittest, time, os
  4. from selenium.webdriver.common.keys import Keys
  5. from selenium.webdriver import ActionChains
  6. import win32api
  7. import win32con
  8.  
  9. VK_CODE ={'enter':0x0D, 'down_arrow':0x28}
  10.  
  11. #键盘键按下
  12. def keyDown(keyName):
  13. win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)
  14. #键盘键抬起
  15. def keyUp(keyName):
  16. win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)
  17.  
  18. class TestDemo(unittest.TestCase):
  19. def setUp(self):
  20. #self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
  21. self.driver = webdriver.Chrome(executable_path="e:\\chromedriver")
  22. def test_dataPickerByRightKey(self):
  23. # 定义将要访问的网址
  24. url = "http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/35.0b8/win32/zh-CN/"
  25. self.driver.get(url)
  26. # 将窗口最大化
  27. self.driver.maximize_window()
  28. # 暂停5秒,目的防止页面有一些多余的弹窗占据焦点
  29. time.sleep(5)
  30. # 找到文本内容为“Firefox Setup 35.0b8.exe”超链接元素
  31. a = self.driver.find_element_by_link_text("Firefox Setup 35.0b8.exe")
  32. time.sleep(2)
  33. # 在找到的链接元素上模拟点击鼠标右键,
  34. # 以便调出选择“另存为”选项的菜单
  35. ActionChains(self.driver).context_click(a).perform()
  36. # 暂停2秒,防止命令执行太快
  37. time.sleep(2)
  38. for i in range(4):
  39. # 循环按4次下箭头,将焦点切换到“另存为”选项上
  40. # 不同浏览器此选项的位置可能不同
  41. #a.send_keys(Keys.DOWN)
  42. keyDown("down_arrow")
  43. keyUp("down_arrow")
  44. print i
  45. time.sleep(2)
  46. time.sleep(2)
  47. # 当焦点切换到“另存为”选项上后,模拟点击回车键
  48. # 调出保存下载文件路径的Windows窗体
  49. keyDown("enter")
  50. keyUp("enter")
  51. time.sleep(3)
  52. # 通过执行AutoIt编写的操作弹窗的Windows文件保存窗体
  53. # 完成文件保存路径的设置
  54. os.system("E:\API3\\upload_file1.exe")
  55. # 等待文件下载完成,根据各自的网络带宽情况设定等待相应的时间
  56. time.sleep(5)
  57.  
  58. def tearDown(self):
  59. self.driver.quit()
  60.  
  61. if __name__ == '__main__':
  62. unittest.main()

webdriver高级应用- 右键另存为下载文件的更多相关文章

  1. selenium webdriver 右键另存为下载文件(结合robot and autoIt)

    首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...

  2. python webdriver api-右键另存下载文件

    右键另存下载文件 先编辑SciTE脚本: ;ControlFocus("title","text",controlID) ;表示将焦点切换到标题为title窗体 ...

  3. js使用浏览器的另存为下载文件

    页面上的页面如下: 我需要根据返回的url下载文件: js: //判断浏览器类型 function myBrowser(){ var userAgent = navigator.userAgent; ...

  4. 使用selenium实现右键另存为保存文件

    1.需要借住autoit工具和Robot类,下载地址:https://www.autoitscript.com/site/autoit/downloads/ 2.autoit的使用不再详细讲解.如下图 ...

  5. python模拟鼠标键盘操作 GhostMouse tinytask 调用外部脚本或程序 autopy右键另存为

    0.关键实现:程序窗口前置 python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作 1.参考 aut ...

  6. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

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

    在网页上下载文件时,通常需要人为设定下载文件并选择保持路径,这样就无法实现完全自动的下载过程.下面实现基于firefox浏览器的全自动化文件下载操作: #encoding=utf-8 from sel ...

  8. 转:python webdriver API 之下载文件

    webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.要想下载文件,首选要先确定你所要下载的文件的类型.要识别自动文件的下载类型可以使用 curl ,如图 ...

  9. linux 从百度网盘下载文件的方法

    linux 从百度网盘下载文件的方法 发表于2015 年 月 日由shenwang 方法1.wget wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括 ...

随机推荐

  1. Swing编程概述

    Swing作为AWT组件的“强化版”,它的产生主要是为了克服AWT构建的GUI,无法在所有平台都通用的问题.允许编程人员跨平台时指定统一的GUI显示风格也是Swing的最大优势.Swing是AWT的补 ...

  2. Kendo UI Validator 概述

    Kendo UI Validator 概述 Kendo UI Validator 支持了客戶端校驗的便捷方法,它基於 HTML 5 的表單校驗功能,支持很多內置的校驗規則,同時也提供了自定義規則的便捷 ...

  3. RK3288开发过程中遇到的问题点和解决方法之Kernel

    修改背光改变区间 kernel\drivers\video\backlight\pwm_bl.c static int pwm_backlight_update_status(struct backl ...

  4. COGS 1215. [Tyvj Aug11] 冗余电网

    ★   输入文件:ugrid.in   输出文件:ugrid.out   简单对比时间限制:1 s   内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...

  5. LibreOJ #107. 维护全序集

    内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: 匿名   splay模板题 屠龙宝刀点击就送 #include <cstdio&g ...

  6. 实验十三 团队作业9:Beta冲刺与团队项目验收

    实验十三 团队作业9:Beta冲刺与团队项目验收 实验时间 2019-6-20(21) Deadline: [6.20-6.26]之间任选连续3天的23:00,以团队随笔博文提交时间为准. 评分标准: ...

  7. 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别。

    web.config文件中的 <system.web> 节点下加入:<webServices>    <protocols>        <add name ...

  8. shell脚本,awk利用NF来计算文本显示的行数。

    解释: 1.awk 'NF{a++;print a,$0;next}1' file4 首先判断NF是否存在值,第一行第二行第三行第四行都存在,进行执行后面的输出,输出后碰到next后,就结束了后面的操 ...

  9. 01_1_准备ibatis环境

    01_1_准备ibatis环境 1. 搭建环境:导入相关的jar包 mysql-connector-java-5.1.5-bin.jar(mysql)或者ojdbc6.jar(oracle).ibat ...

  10. cocos2dx 单张图片加密

    cocos2dx 已经封装好读取加密的prv文件的方法,打开texturepacker,导入一张图片,在content protection中写入密钥,在texture format中选择prv格式 ...