selenium+python自动化--文件下载弹窗处理(PyKeyboard)

摘要:
Selenium+python自动化99——文件下载弹出式处理原创:上海优优从零开始学习自动化测试。自动化测试的微信号yoyoketang的功能介绍侧重于自动化测试。这个公众号将持续更新自动化教程,包括selenium、appendix、python、界面自动化、机器人框架、jmeter、filler等。我之前提到过一篇selenium 2+python自动化75非输入文件上传文章。当时它是基于Python 2编写的。

selenium+python自动化99--文件下载弹窗处理(PyKeyboard)

原创:上海悠悠 从零开始学自动化测试
从零开始学自动化测试

yoyoketang

本公众号专注自动化测试,会持续更新自动化教程,涉及内容:selenium、appium、python、接口自动化、robotframework、jmeter、fiddler等内容。

前言

在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!)
有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果。
之前讲过一篇Selenium2+python自动化75-非input文件上传(SendKeys)这个当时是基于python2写的。
最近很多小伙伴开始用python3了,这个SendKeys在python3上没法用,python3需要用PyUserInput,详细安装教程地址Selenium+python自动化84-python3.6用PyUserInput

安装依赖包:

  • 依赖pywin32
  • 依赖pyHook
PyKeyboard键盘操作

PyUserInput模块里面主要有两个类:

  • PyMouse, 专门模拟鼠标操作
  • PyKeyboard,专门模拟键盘上的操作

先用手工在键盘上操作下,记住操作步骤:按Tab键—按Enter键

selenium+python自动化--文件下载弹窗处理(PyKeyboard)第1张

代码参考

# 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!")

免责声明:文章转载自《selenium+python自动化--文件下载弹窗处理(PyKeyboard)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇css3实现的4种动画特效按钮2.1.1优化程序性能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

react 使用react-app-rewired后启动不了

使用了 "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test", "eject": "react-app-rewired eject"...

Windows Phone开发工具初体验【转载】

Windows Phone开发工具在MIX 2010上火热登场了。Windows Mobile开发者们压抑许久的热情终于爆发出来,对于Windows Phone的华丽转身,开发者们褒贬不一,有人对Silverlight、 XNA等新技术充满期待,有人对放弃以前版本兼容性、不支持C++开发满腹怨言。 无论如何,Windows Phone为我们带来了新的用户体...

C#开发Android应用实战 读后感

最近两年从事C#网站和项目开发比较多,JAVA项目比较少了,没有经历过手机开发项目的经验。手上也有两部Android、HTC智能手机,喜欢手机客户端上部分软件的功能,自己也想开发一个类似小说阅读器手机端的搜集IT技术文章的手机软件。特申请一本《C#开发Android应用实战》来学习和阅读。年前一月三十一号拿到此书,因为手头还有WCF等技术一直在学习和实践,...

revit添加族参数

打开一个族文件,并为族文件添加参数 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){try{UIApplication uiApp = commandData.Application;Autodesk.Revit....

libpng warning iCCP known incorrect sRGB profile

**问题:**当在pycharm中引用pygame模块导入png图像运行后,发出警告:libpng warning: iCCP: known incorrect sRGB profile 原因:因为libpng-1.6以上版本增强了ICC profiles检查,所以发出警告。此警告可以忽略。若要消除警告则要从原图像中去掉ICCP chunk。 方法:利用p...

Git 本地保存账号密码的删除或修改

转自:https://blog.csdn.net/lwqldsyzx/article/details/61228299 Git 本地拉取代码时需要输入用户名和密码时,会自动将用户名密码信息保存起来。需要清除时操作如下: 1 win10 系统下进入控制面板 》 用户帐户 》 管理你的凭据选择 [Windows 凭据] git 保存的用户信息在普通凭据列表里...