selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言
在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!)
有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果。
之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的。
最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserInput,详细安装教程地址【selenium+python自动化85-python3.6上SendKeys报错用PyUserInput取代】
安装依赖包:
- 依赖pywin32
- 依赖pyHook
PyKeyboard键盘操作
PyUserInput模块里面主要有两个类:
- PyMouse, 专门模拟鼠标操作
- PyKeyboard,专门模拟键盘上的操作
先用手工在键盘上操作下,记住操作步骤:按Tab键--按Enter键
代码参考
# coding:utf-8
from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time
driver = webdriver.Firefox()
driver.get("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")
time.sleep(3)
# 默认在取消按钮上,先切换到保存文件上
k = PyKeyboard()
# 发送tab
k.press_key(k.tab_key)
k.release_key(k.tab_key)
time.sleep(3)
# 发送回车
这里用到两个方法,一个是press_key按住Tab键,另外一个是release_key释放按键。其实还有个方法tap_key
tap_key模拟点击
先看下tap_key源码是怎么设计的,实际上tap_key就是封装的press_key和release_key这2个方法
- character 传对应的键盘事件
- n=1 默认只点一次
- interval=0 如果有多次点击操作,中间的间隙时间,默认sleep时间为0
def tap_key(self, character='', n=1, interval=0):
"""Press and release a given character key n times."""
for i in range(n):
self.press_key(character)
self.release_key(character)
time.sleep(interval)
改成tap_key操作
# coding:utf-8
from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time
# **作者:上海-悠悠, QQ交流群:646645429**
driver = webdriver.Firefox()
driver.get("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")
time.sleep(3)
# 默认在取消按钮上,先切换到保存文件上
k = PyKeyboard()
# 模拟Tab
k.tap_key(k.tab_key)
time.sleep(3)
# 发送Enter回车
k.tap_key(k.enter_key)
PyKeyboard其它操作
除了能模拟tab,enter这种操作,也能模拟在输入框输入内容.
基本操作方法,如输入h:k.tap_key(“h”)
# coding:utf-8
from selenium import webdriver
from pykeyboard import PyKeyboard
from pymouse import PyMouse
import time
# **作者:上海-悠悠, QQ交流群:646645429**
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
time.sleep(3)
k = PyKeyboard()
def input_str(s):
'''输入一串英文'''
for i in s:
k.tap_key(i)
k.tab_key(k.enter_key)
input_str("helloworld!")
作者:上海-悠悠, QQ交流群:646645429
selenium+python自动化98--文件下载弹窗处理(PyKeyboard)的更多相关文章
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- selenium+python自动化登录脚本
利用selenium+python写的一个关于登录的自动化脚本
- 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)
Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...
- selenium+python自动化102-登录页面滑动解锁(ActionChains)
前言 登录页面会遇到滑动解锁,滑动解锁的目的就是为了防止别人用代码登录(也就是为了防止你自动化登录),有些滑动解锁是需要去拼图这种会难一点. 有些直接拖到最最右侧就可以了,本篇讲下使用 seleniu ...
- selenium+python自动化100-centos上搭建selenium启动chrome浏览器headless无界面模式
环境准备 前言 selenium在windows机器上运行,每次会启动界面,运行很不稳定.于是想到用chrome来了的headless无界面模式,确实方便了不少. 为了提高自动化运行的效率和稳定性,于 ...
- selenium+python自动化之元素定位
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...
- selenium+python自动化之操作浏览器
一.打开网站 1.第一步:从selenium里面导入webdriver模块 2.打开Firefox浏览器(Ie和Chrome对应下面的) 3.打开百度网址 二.设置休眠 1.由于打开百度网址后,页面加 ...
- selenium+python自动化之环境安装
一.Python安装 1.操作系统:win7 64位系统 2.下载Python安装包,选择2.7版本和3.6版本都可以(最好安装2.7版本稳定)官网下载地址:https://www.python.or ...
- selenium python自动化简明演示
1.selenium安装: pip install -U selenium参考:https://pypi.python.org/pypi/selenium#downloads2.下载firefox驱动 ...
随机推荐
- 内网渗透中SSh的巧用
后续应该会做个实例 转自:http://www.myhack58.com/Article/html/3/8/2009/25156.htm 经常遇到如下情形,内部网络主机通过路由器或者安全设备做了访问控 ...
- 自动化工具-jenkins
jenkins自动化工具使用教程 自动化构建.测试.部署.代码检测越来越重要.主要有一下几点原因 企业做大,项目变多,多端支持(web,h5,小程序等) 微服务提倡高内聚低耦合,项目因拆分变多 Dev ...
- (1)变量、常量、程序交互、数据类型、bool、基本运算符
什么是变量 变量由变量名和变量值组成 name = 'Alex Li' 这个算式就是将一个值赋予给变量,也就是声明变量的意思 name 就是一个变量,也是一个变量的名字 'Alex Li' 就是一个 ...
- HashMap Hashtable LinkedHashMap TreeMap
// Map<String, String> map = new HashMap<String, String>(); // bb aa cc Map<String, S ...
- 【BZOJ2558】Count on a tree
又是因为傻逼错误浪费了半天时间 原题: 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个 ...
- BZOJ1835,LG2605 [ZJOI2010]基站选址
题意 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为\(D_i\) 需要在这些村庄中建立不超过K个通讯基站,在第i个村庄建立基站的费用为\(C_i\) 如果在距离第i个村 ...
- js操作链接url
使用js对当前的URL进行操作,可以使用内置对象window.location: window.location有以下属性: window.location.href:取得当前地址栏中的完整URL,可 ...
- B树就想到这个
比如要查找60 先在根结点中查,根结点里面有 17 35这2个关键字, 60 > 35,则从右边开始查找 p3指针开始查找 , 到了第二层的最右边的那个结点开始查找 , 里面有 65 8 ...
- hive 创建orc表
orc表 创建具备ACID及Transactions的表 这里的表需要具备下面几个条件: 1. 必须以 ORC 格式存储 2. 必须分 bucket,且不能 sort 3. 必须显式声明tran ...
- smarty 学习 ——smarty 开发环境配置
smarty 对于开发的便利性不用多说了,直接进行开发环境的配置. 1.下载smarty 开发包 直接在官网进行下载即可 2.引用开发核心库 将libs文件中的东西拷贝到工程. smarty.clas ...