Selenium3+python3自动化(四十六)--弹窗处理(PyKeyboard) tab切换,enter回车,输入

2021-03-29 03:25

阅读:445

标签:sele   nis   除了   pre   bdr   tab键   image   mini   NPU   

前言

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

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

PyKeyboard键盘操作

PyUserInput模块里面主要有两个类

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

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

技术图片

 

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

参考:Selenium3+python3自动化(十四)--alert\confirm\prompt

点击【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)#百度一下

  

Selenium3+python3自动化(四十六)--弹窗处理(PyKeyboard) tab切换,enter回车,输入

标签:sele   nis   除了   pre   bdr   tab键   image   mini   NPU   

原文地址:https://www.cnblogs.com/canglongdao/p/13617614.html


评论


亲,登录后才可以留言!