Selenium 鼠标和键盘操作

Selenium 提供了丰富的鼠标和键盘操作功能,可以模拟用户的交互行为,例如点击、双击、拖放、悬停、输入文本、按下组合键等。

以下是 Selenium 中常用的鼠标和键盘操作及其说明:

鼠标操作

操作类型方法说明
点击click(element)click()点击指定的元素或当前鼠标位置。
双击double_click(element)double_click()双击指定的元素或当前鼠标位置。
右键点击context_click(element)context_click()右键点击指定的元素或当前鼠标位置。
拖放drag_and_drop(source, target)将源元素拖放到目标元素。
悬停move_to_element(element)将鼠标移动到指定元素上。
按住和释放click_and_hold(element)release()按住指定元素并释放,用于实现拖拽操作。

键盘操作

操作类型方法说明
输入文本send_keys("text")向输入框或文本区域输入指定的文本。
按下组合键send_keys(Keys.CONTROL + 'a')模拟按下组合键(如 Ctrl + A)。
按下单个键send_keys(Keys.KEY_NAME)模拟按下单个键(如 Enter、Tab、Shift 等)。
释放按键key_up(key)释放按下的键。

常用键盘键值

键值说明
Keys.ENTER回车键
Keys.TABTab 键
Keys.SHIFTShift 键
Keys.CONTROLCtrl 键
Keys.ALTAlt 键
Keys.ESCAPEEsc 键
Keys.BACKSPACE退格键
Keys.SPACE空格键
Keys.ARROW_UP上箭头键
Keys.ARROW_DOWN下箭头键
Keys.ARROW_LEFT左箭头键
Keys.ARROW_RIGHT右箭头键

鼠标操作(ActionChains 类)

在 Selenium 中,鼠标操作主要通过 ActionChains 类来实现。ActionChains 类允许我们执行复杂的鼠标操作,如点击、双击、右键点击、拖放和悬停等。

点击、双击、右键点击

  1. 点击(Click):模拟鼠标左键点击操作。
  2. 双击(Double Click):模拟鼠标左键双击操作。
  3. 右键点击(Right Click):模拟鼠标右键点击操作。

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 设置正确的驱动路径
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# 打开网页
driver.get("https://example.com")

# 定位元素
element = driver.find_element(By.ID, "element_id")

# 创建 ActionChains 对象
actions = ActionChains(driver)

# 点击操作
actions.click(element).perform()

# 双击操作
actions.double_click(element).perform()

# 右键点击操作
actions.context_click(element).perform()

# 关闭浏览器
driver.quit()

拖放操作

拖放操作是指将一个元素拖动到另一个位置或另一个元素上。

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 设置正确的驱动路径
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# 打开网页
driver.get("https://example.com")

# 定位拖动的元素和目标元素
source_element = driver.find_element(By.ID, "source_element_id")
target_element = driver.find_element(By.ID, "target_element_id")

# 创建 ActionChains 对象
actions = ActionChains(driver)

# 拖放操作
actions.drag_and_drop(source_element, target_element).perform()

# 关闭浏览器
driver.quit()

悬停操作

悬停操作是指将鼠标指针悬停在某个元素上,通常用于触发下拉菜单或显示提示信息。

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

# 初始化浏览器驱动
driver = webdriver.Chrome()

# 打开网页
driver.get("https://example.com")

# 定位元素
element = driver.find_element(By.ID, "element_id")

# 创建 ActionChains 对象
actions = ActionChains(driver)

# 悬停操作
actions.move_to_element(element).perform()

# 关闭浏览器
driver.quit()

键盘操作(Keys 类)

Selenium 中的键盘操作主要通过 Keys 类来实现。Keys 类提供了各种键盘按键的模拟操作,包括发送组合键和特殊键操作。

发送组合键

组合键操作是指同时按下多个键,例如 Ctrl + C(复制)或 Ctrl + V(粘贴)。

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 设置正确的驱动路径
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 打开网页
driver.get("https://example.com")

# 定位输入框
input_element = driver.find_element(By.ID, "input_element_id")

# 输入内容并发送组合键
input_element.send_keys("Hello, World!")
input_element.send_keys(Keys.CONTROL, 'a')  # 全选
input_element.send_keys(Keys.CONTROL, 'c')  # 复制
input_element.send_keys(Keys.CONTROL, 'v')  # 粘贴

# 关闭浏览器
driver.quit()

特殊键操作(Enter、Tab、Shift 等)

特殊键操作是指模拟按下键盘上的特殊键,如 EnterTabShift 等。

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 设置正确的驱动路径
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 打开网页
driver.get("https://example.com")

# 定位输入框
input_element = driver.find_element(By.ID, "input_element_id")

# 输入内容并按下 Enter 键
input_element.send_keys("Hello, World!")
input_element.send_keys(Keys.ENTER)

# 按下 Tab 键切换到下一个元素
input_element.send_keys(Keys.TAB)

# 按下 Shift 键并输入大写字母
input_element.send_keys(Keys.SHIFT, "a")  # 输入大写的 'A'

# 关闭浏览器
driver.quit()

综合示例

以下是一个完整的示例,展示如何使用鼠标和键盘操作:

实例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

# 设置正确的驱动路径
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 打开网页
driver.get("https://www.example.com")

# 鼠标操作
element = driver.find_element(By.ID, "button")
actions = ActionChains(driver)
actions.move_to_element(element).click().perform()

# 键盘操作
input_box = driver.find_element(By.ID, "input-box")
input_box.send_keys("Hello, Selenium!")
input_box.send_keys(Keys.ENTER)

# 关闭浏览器
driver.quit()