一、前言
在之前的教學中對于頁面的操作只涉及到了兩個:點擊、輸入;其實Selenium的鍵盤滑鼠操作還有很多,現在就為你一一講解,
點我獲取更多教程、面試經驗、Python分享
【Python測驗交流群:8140 78962】
(PS:個人在用的人工智能學習網站推薦給大家:captainai,覺得不錯請三連支持一下)
文章目錄
- 一、前言
- 二、鍵盤事件
- 1. 輸入指定內容【send_keys】
- 2. 模擬按下/彈起【key_down/key_up】
- 3. 清空輸入【clear】
- 三、滑鼠事件
- 1. 點擊【click】
- 2. 單擊并按住【click_and_hold】
- 3. 右鍵單擊【context_click】
- 4. 移動到元素(懸浮)【move_to_element】
- 5. 偏移移動【move_by_offset】
- 6. 拖拽【drag_and_drop】
- 7. 偏移拖拽【drag_and_drop_by_offset】
- 8. 釋放滑鼠【release】
二、鍵盤事件
1. 輸入指定內容【send_keys】
1.1 我們可以使用send_keys來輸入我們想要輸入的內容
例如打開百度,搜索框輸入:曲鳥 csdn:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # 啟動chrome瀏覽器
driver.get('https://www.baidu.com/') # 打開百度網址
# 在輸入框輸入:曲鳥 csdn
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鳥 csdn')
1.2 也可以指定按鍵輸入
例如我們打開百度輸入:csdn 曲鳥,并粘貼復制它三次
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() # 啟動chrome瀏覽器
driver.get('https://www.baidu.com/') # 打開百度網址
# 在輸入框輸入:曲鳥 csdn
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鳥 csdn')
# 按下crtl+A 全選
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'a')
# 按下crtl+C 復制
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'c')
# 按下crtl+V 粘貼
for i in range(3):
time.sleep(0.5)
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')
執行效果

1.3 組合按鍵規則
send_keys支持按鍵的組合傳遞,例如上述的粘貼【Ctrl+V】操作,代碼實作為:
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')
另外,通過+號做連接組合按鍵也是可行的
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL+'c')
如果想同時按下三個或更多按鍵鍵,則在括號中使用,或+號追加引數即可,例如在輸入框同時輸入a、b、c:
driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('a', 'b','c')
另外,我們可以通過【Ctrl+滑鼠左鍵】代碼中的Keys,查看支持哪些按鍵及呼叫代碼

2. 模擬按下/彈起【key_down/key_up】
Webdriver還提供了模擬鍵盤按下/彈起的操作,例如上述的復制操作可以改寫為下面的代碼
driver.find_element(By.XPATH, '//*[@id="kw"]')
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()
實際該方法不常用,使用第一種方法實作來說更簡單,
3. 清空輸入【clear】
clear方法可以清楚輸入框中的內容,例如下面的代碼,會先打開百度,搜索框輸入:曲鳥 csdn,然后呼叫clear方法進行清空
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
# 在輸入框輸入:曲鳥 csdn
driver = driver.find_element(By.XPATH, '//*[@id="kw"]')
driver.send_keys('曲鳥 csdn')
driver.clear()
三、滑鼠事件
1. 點擊【click】
通過click方法能夠對頁面中可點擊元素進行點擊操作,例如下面的代碼會對百度的【百度一下】按鈕進行點擊
from selenium import webdriver
from selenium.webdriver.common.by import By
driver= webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
# 點擊百度一下
driver.find_element(By.XPATH,'//*[@id="su"]').click()
2. 單擊并按住【click_and_hold】
下面的代碼會將button這個元素單擊并按住
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
webdriver.ActionChains(driver).click_and_hold(button).perform()
3. 右鍵單擊【context_click】
下面的代碼會將button這個元素單擊并按住
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click()
webdriver.ActionChains(driver).context_click(button).perform()
4. 移動到元素(懸浮)【move_to_element】
下面的代碼會將滑鼠移動到button這個元素上
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
webdriver.ActionChains(driver).move_to_element(button).perform()
5. 偏移移動【move_by_offset】
此方法將滑鼠從其當前位置(或 0,0)移動給定的偏移量,如果坐標在視圖視窗之外,那么滑鼠將在瀏覽器視窗之外結束,
下面的代碼會將以button這個元素為起點,將滑鼠移動長為100,高為100的距離
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/') # 打開百度網址
button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]')
xOffset = 100
yOffset = 100
webdriver.ActionChains(driver).move_by_offset(xOffset, yOffset).perform()
6. 拖拽【drag_and_drop】
此方法首先在源元素上執行單擊并按住,移動到目標元素的位置,然后釋放滑鼠,
下面的代碼會單擊按住sourceEle元素,然后拖拽到targetEle上,然后釋放滑鼠
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
targetEle = driver.find_element(By.ID, "droppable")
webdriver.ActionChains(driver).drag_and_drop(sourceEle,targetEle).perform()
7. 偏移拖拽【drag_and_drop_by_offset】
此方法首先在源元素上執行單擊并按住,移動到給定的偏移量,然后釋放滑鼠,
下面的代碼會單擊按住sourceEle元素,將滑鼠移動長為100,高為100的距離,然后釋放滑鼠
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
XOffset = 100
YOffset = 100
webdriver.ActionChains(driver).drag_and_drop_by_offset(sourceEle, XOffset, YOffset).perform()
8. 釋放滑鼠【release】
此動作釋放按下的滑鼠左鍵,如果傳遞了 WebElement,它將在給定的 WebElement 上釋放按下的滑鼠左鍵
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://crossbrowsertesting.github.io/drag-and-drop")
sourceEle = driver.find_element(By.ID, "draggable")
targetEle = driver.find_element(By.ID, "droppable")
webdriver.ActionChains(driver).click_and_hold(sourceEle).move_to_element(targetEle).perform()
webdriver.ActionChains(driver).release().perform()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/316640.html
標籤:python
