Selenium3+python3自動化(四十六)--彈窗處理(PyKeyboard) tab切換,enter回車,輸入


前言

在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)#百度一下

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM