• 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

  • 相关阅读:
    敌兵布阵(线段树)
    确定比赛名次(拓扑排序)
    Virtual Friends(并查集+map)
    A Bug's Life(向量偏移)
    Segment set(线段并查集)
    带权值得并查集
    Farm Irrigation(非常有意思的并查集)
    小希的迷宫
    Hadoop, Hadoop涉及到的一些常见概念(分布式与集群、HDFS、MapReduce等),Hadoop怎么用?
    Hadoop 的安装和使用(基于Linux~Ubuntu的虚拟机)
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/9563258.html
Copyright © 2020-2023  润新知