Python3+Selenium3自動化測試-(四)


之前的文章中,針對元素的各種屬性,進行了相對應的操作,接下來可以看看selenium如何模擬操作鍵盤和鼠標。

鍵盤事件

webdriver可以模擬常規鍵盤上所有的按鍵操作,在導入包的源碼中可以看到所有命令對應的按鍵。

以代碼的形式來展示:

# coding=utf-8

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

# 鍵盤事件
driver.find_element(By.ID, 'kw').send_keys("selenium&python?")
time.sleep(3)
driver.find_element(By.ID, 'kw').send_keys(Keys.BACK_SPACE)  # 利用backspace鍵刪除字符串最后一位
time.sleep(3)
driver.find_element(By.ID, 'kw').send_keys(Keys.SPACE)  # 在字符串后空格鍵添加空格
driver.find_element(By.ID, 'kw').send_keys("學習")  # 繼續在字符串后面添加字符串
driver.find_element(By.ID, 'kw').send_keys(Keys.ENTER)  # 輸入回車enter鍵進行搜索
time.sleep(3)

driver.find_element(By.ID, 'kw').send_keys(Keys.CONTROL, 'a')  # 全選搜索框中的內容
driver.find_element(By.ID, 'kw').send_keys(Keys.CONTROL, 'x')  # 剪切搜索框中的內容,也可以使用c進行復制
time.sleep(3)

# 打開另外一個搜索網站,輸入剛剛剪切的內容
driver.get("https://www.google.com")
driver.find_element(By.ID, 'lst-ib').send_keys(Keys.CONTROL,
                                               'v')  # 粘貼剛剛復制、剪切的內容
driver.find_element(By.ID, 'lst-ib').submit()  # 提交搜索

time.sleep(3)
"""
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)

send_keys(Keys.SPACE) 空格鍵(Space)

send_keys(Keys.TAB) 制表鍵(Tab)

send_keys(Keys.ESCAPE) 回退鍵(Esc)

send_keys(Keys.ENTER) 回車鍵(Enter)

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)

send_keys(Keys.F1) 鍵盤 F1
...
send_keys(Keys.F12) 鍵盤 F12
"""
driver.quit()

 

鼠標事件

上面的鍵盤事件比較好理解,鼠標事件的話直接看源代碼或許就有些糾結了,但是源代碼的注釋說明其實對ActionChains說明的比較清楚。

ActionChains是一種自動執行低級別交互的方法,例如鼠標移動,鼠標按鈕操作,按鍵和上下文菜單交互。 這對於執行更復雜的操作非常有用,例如懸停和拖放。

用戶操作。
       在ActionChains對象上調用操作方法時,操作將存儲在ActionChains對象的隊列中。
       當調用perform()時,事件將按它們排隊的順序觸發。

 ActionChains可以用於鏈式或者可以將操作逐個排隊,然后執行。

無論哪種方式,動作都按照它們被調用的順序執行,一個在另一個之后執行。

這里還是以代碼展示部分功能吧:

# coding=utf-8

import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()

driver.get("https://www.baidu.com")
time.sleep(3)

# 定位元素
ele_1 = driver.find_element(By.XPATH, '//*[@id="u1"]/a[9]')
ele_2 = driver.find_element(By.XPATH, '//*[@id="u1"]/a[8]')

# 將鼠標懸停在元素1上3秒后再次懸停到元素2上
ActionChains(driver).move_to_element(ele_1).perform()
time.sleep(3)
ActionChains(driver).move_to_element(ele_2).perform()
time.sleep(3)

driver.quit()

上述代碼實現了在元素上進行懸停,再移動至另一元素上。

還有其他操作如下:

 1 """
 2 click(on_element=None) ——單擊鼠標左鍵
 3 
 4 click_and_hold(on_element=None) ——點擊鼠標左鍵,不松開
 5 
 6 context_click(on_element=None) ——點擊鼠標右鍵
 7 
 8 double_click(on_element=None) ——雙擊鼠標左鍵
 9 
10 drag_and_drop(source, target) ——拖拽到某個元素然后松開
11 
12 drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某個坐標然后松開
13 
14 key_down(value, element=None) ——按下某個鍵盤上的鍵
15 
16 key_up(value, element=None) ——松開某個鍵
17 
18 move_by_offset(xoffset, yoffset) ——鼠標從當前位置移動到某個坐標
19 
20 move_to_element(to_element) ——鼠標移動到某個元素
21 
22 move_to_element_with_offset(to_element, xoffset, yoffset) ——移動到距某個元素(左上角坐標)多少距離的位置
23 
24 perform() ——執行鏈中的所有動作
25 
26 release(on_element=None) ——在某個元素位置松開鼠標左鍵
27 
28 send_keys(*keys_to_send) ——發送某個鍵到當前焦點的元素
29 
30 send_keys_to_element(element, *keys_to_send) ——發送某個鍵到指定元素
31 """

 通過這些鍵盤和鼠標的操作,就可以做更多了


免責聲明!

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



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