python webdriver api-右键另存下载文件
右键另存下载文件
先编辑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-右键另存下载文件的更多相关文章
- rest api上传和下载文件
rest api上传和下载文件 function FileToString(AFileName: string): string; var LMemoryStream: TMemoryStream; ...
- 转:python webdriver API 之下载文件
webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.要想下载文件,首选要先确定你所要下载的文件的类型.要识别自动文件的下载类型可以使用 curl ,如图 ...
- python WebDriver如何处理右键菜单
WebDriver如何处理右键菜单 一.背景 在学习selenium webdriver的过程中,遇到这样一个问题.ActionChains类中提供了context_click的方法,它可以用来在we ...
- 转:python webdriver API 之操作测试对象
一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...
- 转:python webdriver API 之简单对象的定位
对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) , ...
- python网络爬虫之使用scrapy下载文件
前面介绍了ImagesPipeline用于下载图片,Scrapy还提供了FilesPipeline用与文件下载.和之前的ImagesPipeline一样,FilesPipeline使用时只需要通过it ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...
- python网络编程-socket上传下载文件(包括md5验证,大数据发送,粘包处理)
ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ft ...
- 转:python webdriver API 之上传文件
文件上传操作也比较常见功能之一,上传功能操作 webdriver 并没有提供对应的方法,关键上传文件的思路.上传过程一般要打开一个系统的 window 窗口,从窗口选择本地文件添加.所以,一般会卡在如 ...
随机推荐
- 使用shell数据处理数据实例①-------手把手教学版
引子: 在工作过程中经常要处理各种小数据,同事间会用各种工具方法来处理,比如用java.python.Perl甚至用UE手工处理.但貌似不都方便. 今天举一例子使用shell来处理,来说明shell一 ...
- C++类继承示例
C++的子类与孙子类都实现了虚函数时,孙子类的实现会覆盖掉子类的实现. 继承的最主要的应用就是把不同的类放到一个数组中,然后遍历调用同名函数. 实例如下: #include <iostream& ...
- 浅谈 Java 字符串(String, StringBuffer, StringBuilder)
我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...
- 从底层源码浅析Mybatis的SqlSessionFactory初始化过程
目录 搭建源码环境 POM依赖 测试SQL Mybatis全局配置文件 UserMapper接口 UserMapper配置 User实体 Main方法 快速进入Debug跟踪 源码分析准备 源码分析 ...
- CCCC L2 部落 L3社交集群
https://www.patest.cn/contests/gplt/L2-024 题解:部落是并查集模板题. 社交集群用并查集暴力有23分 坑:写了半天,发现自己并查集没怎么学明白,现在才搞懂: ...
- 机器学习TensorFlow安装经过摘要
第一步:我在Github上面下载了TensorFlow项目源码 第二步:在tensorflow-master/tensorflow/docs_src/install里面找到了install_mac.m ...
- iOS多线程编程之自定义NSOperation(转载)
一.实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UITableViewController. 1 // ...
- 软件工程-wordcount(C语言实现)
Github项目地址:https://github.com/xiaobaot/wordcount-wc/tree/master WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数 ...
- 地理位置geo处理之mysql函数
目前越来越多的业务都会基于LBS,附近的人,外卖位置,附近商家等等,现就讨论离我最近这一业务场景的解决方案. 原文:https://www.jianshu.com/p/455d0468f6d4 目前已 ...
- 第五课 JAVA反射获取对象属性和方法
package com.hero; import java.lang.reflect.Field; public class TestReflction5 { public static void m ...