zoukankan      html  css  js  c++  java
  • Selenium3+python3自动化(四十六)--弹窗处理(PyKeyboard) tab切换,enter回车,输入

    前言

    在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(你可能首先想到的是,定位!定位!定位)

    有时候我们并不是非要去定位到这个按钮再去点击,学会使用键盘的快捷键操作,也能达到一样的效果。

    PyKeyboard键盘操作

    PyUserInput模块里面主要有两个类

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

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

     因为暂无上图中的场景,那么咱可以使用alert窗口

    参考:Selenium3+python3自动化(十四)--alertconfirmprompt

    点击【prompt】按钮,默认在输入框上,按一次tab键切换到【确定】按钮上,按二次tab键切换到【取消】按钮上

     参考代码

    # coding:utf-8
    from selenium import webdriver
    from pykeyboard import PyKeyboard
    # from pymouse import PyMouse
    import time
    driver=webdriver.Chrome()
    driver.get("file:///C:/Users/Administrator/Desktop/1.html")
    driver.find_element_by_id("prompt").click()
    kb=PyKeyboard()
    #发送tab键
    kb.press_key(kb.tab_key)
    kb.release_key(kb.tab_key)
    
    time.sleep(2)
    #发送回车
    kb.press_key(kb.enter_key)
    kb.release_key(kb.enter_key)
    

     这里用到了两个方法,一个时press_key按住Tab/Enter键,另外一个是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
    driver=webdriver.Chrome()
    driver.get("file:///C:/Users/Administrator/Desktop/1.html")
    driver.find_element_by_id("prompt").click()
    kb=PyKeyboard()
    #发送tab键
    # kb.press_key(kb.tab_key)
    # kb.release_key(kb.tab_key)
    
    # kb.tap_key(kb.tab_key) #tap_key方法,点击一次
    kb.tap_key(kb.tab_key,2) #tap_key方法,点击2次
    time.sleep(2)
    #发送回车
    # kb.press_key(kb.enter_key)
    # kb.release_key(kb.enter_key)
    kb.tap_key(kb.enter_key)
    

     PyKeyboard其它操作

    除了能模拟tab,enter这种操作,也能模拟在输入框输入内容

    基本操作方法;如输入h:tap_key("h")

    如下,在弹出框的输入框输入

    # coding:utf-8
    from selenium import webdriver
    from pykeyboard import PyKeyboard
    # from pymouse import PyMouse
    import time
    driver=webdriver.Chrome()
    driver.get("file:///C:/Users/Administrator/Desktop/1.html")
    driver.find_element_by_id("prompt").click()
    kb=PyKeyboard()
    def input_s(x):
        for i in x:
            kb.tap_key(i)
        kb.tap_key(kb.enter_key)
    input_s("hello")
    #发送tab键
    kb.tap_key(kb.tab_key) #tap_key方法,点击一次
    time.sleep(2)
    #发送回车
    kb.tap_key(kb.enter_key)  

     如下,在浏览器下的输入框中输入,并搜索

    # coding:utf-8
    from selenium import webdriver
    from pykeyboard import PyKeyboard
    import time
    driver=webdriver.Chrome()
    driver.get("https://www.baidu.com")
    k=PyKeyboard()
    
    k.tap_key('h') #一次只能输入一个字母
    k.tap_key(k.enter_key) #将字母键入输入框
    time.sleep(2)
    k.tap_key(k.enter_key)#百度一下
    

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    hihocoder [Offer收割]编程练习赛14 投掷硬币
    hihocoder [Offer收割]编程练习赛14 小Hi和小Ho的礼物
    CodeForces
    [HNOI2004] 打砖块
    CodeForces
    hdu4028 The time of a day[map优化dp]
    hdu5009 Paint Pearls[指针优化dp]
    hdu4719 Oh My Holy FFF[线段树优化dp]
    hdu1024 Max Sum Plus Plus[降维优化好题(貌似以后可以不用单调队列了)]
    hdu3709 Balanced Number[数位dp]
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13617614.html
Copyright © 2011-2022 走看看