Selenium(9):模擬滑鼠鍵盤的操作事件
滑鼠操作事件
在實際的web產品測試中,對於滑鼠的操作,不單單隻有click(),有時候還要用到右擊、雙擊、拖動等操作,這些操作包含在ActionChains類中。
ActionChains類中滑鼠操作常用方法:
首先匯入ActionChains類: from selenium.webdriver.common.action_chains import ActionChains
context_click():右擊
double_click():雙擊
drag_and_drop():拖動
move_to_element():滑鼠移動到一個元素上
click_and_hold():按下滑鼠左鍵在一個元素上(長按)
常用的鏈條命令
pause():停留、click():點選、release():釋放、perform():執行
ActionChains(driver).move_to_element(元素物件).pause(秒).click(元素物件).release(元素物件).perform()
程式碼如下:
import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains current_path= os.path.dirname(os.path.abspath(__file__)) # 當前路徑 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路徑 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 開啟網站 # 右擊操作 context_click() element_obj = driver.find_element(By.XPATH,'//input[@id="su"]') mouse_obj = ActionChains(driver) mouse_obj.context_click(element_obj).perform() # perform執行操作 # 點選操作 click() element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]') mouse_obj = ActionChains(driver) mouse_obj.click(element_obj).release(element_obj).perform() # 長按操作 click_and_hold() element_obj = driver.find_element(By.XPATH,'//a[text()="hao123"]') mouse_obj = ActionChains(driver) mouse_obj.click_and_hold(element_obj).pause(10).release(element_obj).perform() # 滑鼠移動到一個元素 move_to_element() e1 = driver.find_element(By.XPATH,'//a[@name="tj_briicon"]') e2 = driver.find_element(By.XPATH,'//a[@name="tj_zhidao"]') mouse_obj = ActionChains(driver) mouse_obj.move_to_element(e1).pause(3).click(e2).release(e2).perform() # 鏈條命令
鍵盤操作事件
在實際的web測試工作中,需要配合鍵盤按鍵來操作,webdriver的keys()類提供鍵盤上所有按鍵的操作,還可以模擬組合鍵Ctrl_a,Ctrl+c/v等。
前置條件:匯入Keys類
from selenium.webdriver.common.keys import Keys
頁面上的鍵盤操作(從搜尋框中按兩下tab鍵)
driver.find_element(By.XPATH,'//input[@id="kw"]').click()
ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform()
組合鍵操作 ctrl+a、ctrl+c、ctrl+v
driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python')
ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()
備註:
1、在使用修飾鍵的時候需要key_down()和key_up()方法
修飾鍵包含ctrlaltshift
2、類似alt+F4 ctrl+alt+delete不能使用,這裡的組合鍵只針對網頁生效的
程式碼如下:
import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys current_path = os.path.dirname(os.path.abspath(__file__)) # 當前路徑 driver_path = os.path.join(current_path,'../webdriver/chromedriver.exe') # driver路徑 driver = webdriver.Chrome(executable_path=driver_path) # Firefox,Ie等 driver.get('https://www.baidu.com/') # 開啟網站 # 頁面上的鍵盤操作 從搜尋框中按兩下tab鍵 driver.find_element(By.XPATH,'//input[@id="kw"]').click() ActionChains(driver).send_keys(Keys.TAB).pause(1).send_keys(Keys.TAB).perform() # 組合鍵操作 ctrl+a、ctrl+c、ctrl+v、shift+a # 修飾鍵 ctrl、alt、shift # ctrl+a ==> 按下ctrl、按下a、鬆開a、鬆開ctrl driver.find_element(By.XPATH,'//input[@id="kw"]').send_keys('python') ActionChains(driver).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform() # 備註:系統級別的組合鍵不能使用,因為這裡的組合鍵都是隻針對網頁生效的