右键另存下载文件

先编辑SciTE脚本:

;ControlFocus("title","text",controlID)

;表示将焦点切换到标题为title窗体中的controlID上

;Edit1表示第一个可以编辑的实例

;title表示弹出的Window窗口标题,不同浏览器的标题可能不一样

ControlFocus("请输入要保存的文件名...","","Edit1")

;等待10秒以便window窗口加载成功

WinWait("[CLASS:#32770]","",10)

;将焦点切换到Edit1输入框中

ControlFocus("另存为","","Edit1")

;等待2秒

Sleep(2000)

;将要下载的文件名及路径写入Edit1编辑框中

ControlSetText("另存为","", "Edit1", "d:\iDownload\Firefox Setup 35.0b8.exe")

Sleep(2000)

;点击窗体中的第一个按钮,也就是保存按钮

;ControlClick("另存为","","Button1")

Send("{ENTER}")

Send("{ENTER}")

;保存后将该文件编译成exe文件,并存放到本地磁盘。

;保存后将该文件编译成exe文件,并存放到本地磁盘

然后保存成SciScript,然后用convert工具转成exe文件

执行python程序,修改相关目录

# encoding=utf-8

from selenium import webdriver

import unittest, time, os

from selenium.webdriver.common.keys import Keys

from selenium.webdriver import ActionChains

import win32api

import win32con

VK_CODE ={'enter':0x0D, 'down_arrow':0x28}

#键盘键按下

def keyDown(keyName):

win32api.keybd_event(VK_CODE[keyName], 0, 0, 0)

#键盘键抬起

def keyUp(keyName):

win32api.keybd_event(VK_CODE[keyName], 0, win32con.KEYEVENTF_KEYUP, 0)

class TestDemo(unittest.TestCase):

def setUp(self):

#self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")

self.driver = webdriver.Chrome(executable_path="c:\\chromedriver")

def test_dataPickerByRightKey(self):

# 定义将要访问的网址

url = "http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/35.0b8/win32/zh-CN/"

self.driver.get(url)

# 将窗口最大化

self.driver.maximize_window()

# 暂停5秒,目的防止页面有一些多余的弹窗占据焦点

time.sleep(5)

# 找到文本内容为“Firefox Setup 35.0b8.exe”超链接元素

a = self.driver.find_element_by_link_text("Firefox Setup 35.0b8.exe")

time.sleep(2)

# 在找到的链接元素上模拟点击鼠标右键,

# 以便调出选择“另存为”选项的菜单

ActionChains(self.driver).context_click(a).perform()

# 暂停2秒,防止命令执行太快

time.sleep(2)

for i in range(4):

# 循环按4次下箭头,将焦点切换到“另存为”选项上

# 不同浏览器此选项的位置可能不同

#a.send_keys(Keys.DOWN)

keyDown("down_arrow")

keyUp("down_arrow")

print i

time.sleep(2)

time.sleep(2)

# 当焦点切换到“另存为”选项上后,模拟点击回车键

# 调出保存下载文件路径的Windows窗体

keyDown("enter")

keyUp("enter")

time.sleep(3)

# 通过执行AutoIt编写的操作弹窗的Windows文件保存窗体

# 完成文件保存路径的设置

os.system("d:\\test\\rightClick.exe")

# 等待文件下载完成,根据各自的网络带宽情况设定等待相应的时间

time.sleep(5)

#def tearDown(self):

#self.driver.quit()

if __name__ == '__main__':

unittest.main()

D:\test>python test.py

DevTools listening on ws://127.0.0.1:12860/devtools/browser/c68d0424-6626-421d-8268-3184f78ede57

0

1

2

3

.

----------------------------------------------------------------------

Ran 1 test in 46.308s

OK

python webdriver api-右键另存下载文件的更多相关文章

  1. rest api上传和下载文件

    rest api上传和下载文件 function FileToString(AFileName: string): string; var LMemoryStream: TMemoryStream; ...

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

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

  3. python WebDriver如何处理右键菜单

    WebDriver如何处理右键菜单 一.背景 在学习selenium webdriver的过程中,遇到这样一个问题.ActionChains类中提供了context_click的方法,它可以用来在we ...

  4. 转:python webdriver API 之操作测试对象

    一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...

  5. 转:python webdriver API 之简单对象的定位

    对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) , ...

  6. python网络爬虫之使用scrapy下载文件

    前面介绍了ImagesPipeline用于下载图片,Scrapy还提供了FilesPipeline用与文件下载.和之前的ImagesPipeline一样,FilesPipeline使用时只需要通过it ...

  7. 初级版python登录验证,上传下载文件加MD5文件校验

    服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...

  8. python网络编程-socket上传下载文件(包括md5验证,大数据发送,粘包处理)

    ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ft ...

  9. 转:python webdriver API 之上传文件

    文件上传操作也比较常见功能之一,上传功能操作 webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的 window 窗口,从窗口选择本地文件添加.所以,一般会卡在如 ...

随机推荐

  1. C# 验证XML

    一.验证XML文档 若要验证 XML 文档,需要构造一个 XmlReaderSettings 对象,其中包含用于验证 XML 文档的 XML 架构定义语言 (XSD) 架构.Schema是用于描述和规 ...

  2. 第九次CSP第四题 - 压缩编码

    给定一段文字,已知单词a1, a2, …, an出现的频率分别t1, t2, …, tn.可以用01串给这些单词编码,即将每个单词与一个01串对应,使得任何一个单词的编码(对应的01串)不是另一个单词 ...

  3. ionic 下拉选择框中默认显示传入的参数

    开发过程当中遇到一个有趣的问题,如果我在第一个页面需要把 item { "ownerId" : 1 } 传递给第二个页面,并挂在$scope下 $scope.item = $sta ...

  4. 获取linux工具命令源码

    总结: 通过先通过which找到命令路径path rpm -qf  path 获取源码名称n rpm -qi n   获取源码地址 [root@d mongoexport]# rpm --helpUs ...

  5. 网络层 运输层 NAT路由器 NATP路由器 一根光纤 多个固定ip

    长城宽带想要公网和固定ip的来看看吧.[迅雷赚钱宝吧]_百度贴吧 https://tieba.baidu.com/p/4035318158?red_tag=0898389066 连续电话投诉加咨询一周 ...

  6. c#导出ListView中的数据到Excel表格

    1.添加组件:Microsoft.Office.Interop.Excel 步骤:右键点击“引用”--->添加引用--->COM--->Microsoft.Office.Intero ...

  7. webView内部跳转后 返回不行了

    if (navigationType == UIWebViewNavigationTypeBackForward) {        return YES;    } 重定向?

  8. 2018/03/09 每日一个Linux命令 之 chgrp/chown

    每日一个Linux命令 2018-03-09 Linux 命令 chgrp/chown chgrp [-参数] [文件或者目录] chown [-参数] [文件所有者]:[文件所属群组] [文件或者目 ...

  9. Ball---hdu5821(排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5821 题意:有n个盒子,每个盒子又一个值 a[i] 如果 a[i] 大于 0 说明盒子里面有 1 个颜 ...

  10. 【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题

    windows系统+python3+pyqt5+pyinstaller打包,经常会出现各种打包异常情况.如果代码没有特别异常,那么综合原因,大抵都是这四个元素之间的匹配问题,引起的.作者:一心狮链接: ...