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

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

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

微信号 yoyoketangpython

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

前言

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

安装依赖包:app

  • 依赖pywin32
  • 依赖pyHook

PyKeyboard键盘操做

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

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

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

代码参考设计

# 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_key3d

tap_key模拟点击

先看下tap_key源码是怎么设计的,实际上tap_key就是封装的press_key和release_key这2个方法code

  • 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!")
相关文章
相关标签/搜索