Selenium3 + Python3自動化測試系列四——鼠標事件和鍵盤事件


一、鼠標事件

在 WebDriver 中, 將這些關於鼠標操作的方法封裝在 ActionChains 類提供。 

ActionChains 類提供了鼠標操作的常用方法。

ActionChains 類的成員源碼如下圖所示:

下面我們通過一張表對上圖中對外使用的成員進行分類(即帶下划線的成員不放入下表):

分類 函數名 描述
鼠標操作 def click(self, on_element=None) 鼠標左鍵單擊
鼠標操作 def click_and_hold(self, on_element=None) 鼠標左鍵按鍵,不釋放
鼠標操作 def context_click(self, on_element=None) 鼠標右擊
鼠標操作 def double_click(self, on_element=None) 鼠標左鍵雙擊
鼠標操作 def drag_and_drop(self, source, target) 鼠標拖曳動作,將指定元素位置拖曳到目標元素位置,來移動元素
鼠標操作 def drag_and_drop_by_offset(self, source, xoffset, yoffset) 鼠標拖曳動作,將指定元素按沿x、y方向拖曳指定距離來移動元素
鼠標操作 def move_by_offset(self, xoffset, yoffset) 將鼠標光標沿x、y方向移動指定距離,來實現鼠標的移動
鼠標操作 def move_to_element(self, to_element) 將鼠標光標移動到指定的元素上
鼠標操作 def move_to_element_with_offset(self, to_element, xoffset, yoffset) 將鼠標光標移動到指定的元素相對元素左上角位置偏移(xoffset、yoffset)的位置
鼠標操作 def release(self, on_element=None) 釋放鼠標,與click_and_hold函數配對使用
鍵盤操作 def key_down(self, value, element=None) 按下指定的鍵盤按鍵
鍵盤操作 def key_up(self, value, element=None) 釋放已按下的鍵盤按鍵(與key_down配套使用)
鍵盤操作 def send_keys(self, *keys_to_send) 鍵盤輸入
鍵盤操作 def send_keys_to_element(self, element, *keys_to_send) 給指定元素(可輸入元素)進行鍵盤輸入
其他 def perform(self) 執行所有存儲的動作
其他 def reset_actions(self) 清空所有存儲的動作
其他 def pause(self, seconds) 在指定的時間內暫定所有的輸入

  實例代碼如下:

from selenium.webdriver import Chrome
from selenium.webdriver import ActionChains import time driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") driver.get('https://www.baidu.com') ''' 搜索點擊查詢博客園 driver.find_element_by_id("kw").send_keys("博客園") driver.find_element_by_id("su").click() ''' #鼠標懸移至“更多產品” above = driver.find_element_by_class_name("bri") ActionChains(driver).move_to_element(above).perform() time.sleep(5) driver.quit()

二、鍵盤事件

Keys()類提供了鍵盤上幾乎所有按鍵的方法。 前面了解到, send_keys()方法可以用來模擬鍵盤輸入,

除此 之外, 我們還可以用它來輸入鍵盤上的按鍵, 甚至是組合鍵, 如 Ctrl+A、 Ctrl+C 等。

selenium 提供了比較完整的鍵盤操作,在使用的模擬鍵盤操作之前需要我們導入

from selenium.webdriver.common.keys import Keys即可,然后就可以來模擬鍵盤操作。

#導入Keys 模塊,然后我們看看Keys 模塊定義了那些按鍵
from selenium.webdriver.common.keys import Keys

導入模塊以后,我們可以看看具體的定義按鍵內容,我已經把經常使用的按鍵注釋標記。

    NULL = '\ue000'
    CANCEL = '\ue001'  # ^break
    HELP = '\ue002'
    BACKSPACE = '\ue003'
    BACK_SPACE = BACKSPACE   #刪除鍵
    TAB = '\ue004'   #TAB鍵
    CLEAR = '\ue005'  
    RETURN = '\ue006'
    ENTER = '\ue007'   #回車鍵
    SHIFT = '\ue008'   #Shift鍵
    LEFT_SHIFT = SHIFT
    CONTROL = '\ue009'
    LEFT_CONTROL = CONTROL   #Ctrl 鍵
    ALT = '\ue00a'           #Alt 鍵
    LEFT_ALT = ALT
    PAUSE = '\ue00b'
    ESCAPE = '\ue00c'   #ECS鍵
    SPACE = '\ue00d'    #空格鍵 
    PAGE_UP = '\ue00e'   #PgUp 鍵
    PAGE_DOWN = '\ue00f' #PgDwon 鍵
    END = '\ue010'    #END 鍵
    HOME = '\ue011'   #HOME 鍵
    LEFT = '\ue012'  #左鍵
    ARROW_LEFT = LEFT  
    UP = '\ue013'    #上鍵
    ARROW_UP = UP   
    RIGHT = '\ue014'
    ARROW_RIGHT = RIGHT  #右鍵
    DOWN = '\ue015'      #下鍵
    ARROW_DOWN = DOWN  
    INSERT = '\ue016'    #insert鍵 
    DELETE = '\ue017'    #del鍵

    SEMICOLON = '\ue018'  #';'鍵
    EQUALS = '\ue019'     #'='鍵
  #數字鍵盤
    NUMPAD0 = '\ue01a'  # number pad keys
    NUMPAD1 = '\ue01b'
    NUMPAD2 = '\ue01c'
    NUMPAD3 = '\ue01d'
    NUMPAD4 = '\ue01e'
    NUMPAD5 = '\ue01f'
    NUMPAD6 = '\ue020'
    NUMPAD7 = '\ue021'
    NUMPAD8 = '\ue022'
    NUMPAD9 = '\ue023'
    MULTIPLY = '\ue024' # '*' 鍵
    ADD = '\ue025'   # '+' 鍵
    SEPARATOR = '\ue026'  #','鍵
    SUBTRACT = '\ue027'  # '-' 鍵
    DECIMAL = '\ue028'   # '.'鍵
    DIVIDE = '\ue029'    #'/'鍵

    F1 = '\ue031'  # function  keys
    F2 = '\ue032'
    F3 = '\ue033'
    F4 = '\ue034'
    F5 = '\ue035'
    F6 = '\ue036'
    F7 = '\ue037'
    F8 = '\ue038'
    F9 = '\ue039'
    F10 = '\ue03a'
    F11 = '\ue03b'
    F12 = '\ue03c'

    META = '\ue03d'
    COMMAND = '\ue03d'

組合鍵,比如我們經常使用的Ctrl + A ,Ctrl + C 等都是組合鍵。我們先看個例子

在使用按鍵操作的時候我們需要借助一下send_keys()來模擬操作,Keys.CONTROL 也就是我們鍵盤上的Ctrl鍵,下面是幾個常用的組合鍵。

send_keys(Keys.CONTROL,'a')   #全選(Ctrl+A)

send_keys(Keys.CONTROL,'c')   #復制(Ctrl+C)

send_keys(Keys.CONTROL,'x')   #剪切(Ctrl+X)

send_keys(Keys.CONTROL,'v')   #粘貼(Ctrl+V)

下面我們來練個手,看看鍵盤操作和組合鍵如何使用吧

from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
import time
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get('https://www.baidu.com')
#搜索點擊查詢博客園,多輸入一個園字
driver.find_element_by_id("kw").send_keys("博客園園")
time.sleep(2)
#backspace回格鍵,刪除多輸入一個的 園
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
time.sleep(2)
#輸入空格鍵,重新輸入python
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("Python")
#ctrl+a 全選輸入框的內容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(2)
#ctrl+x 剪切輸入框的內容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(2)
#ctrl+v 粘貼內容到輸入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')
time.sleep(2)
#通過回車鍵來代替單擊操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
time.sleep(5)
driver.quit()

除了上面介紹的鍵盤操作和組合鍵以外,還有一些其他常用的非組合鍵鍵盤操作,其實我們上面實例中已經介紹過一些了。

回車鍵 Keys.ENTER

刪除鍵 Keys.BACK_SPACE

空格鍵 Keys.SPACE

制表鍵 Keys.TAB

回退鍵 Keys.ESCAPE

刷新鍵 Keys.F5

 


免責聲明!

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



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