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.TAB
|
Tab 键
|
Keys.SHIFT
|
Shift 键
|
Keys.CONTROL
|
Ctrl 键
|
Keys.ALT
|
Alt 键
|
Keys.ESCAPE
|
Esc 键
|
Keys.BACKSPACE
|
退格键
|
Keys.SPACE
|
空格键
|
Keys.ARROW_UP
|
上箭头键
|
Keys.ARROW_DOWN
|
下箭头键
|
Keys.ARROW_LEFT
|
左箭头键
|
Keys.ARROW_RIGHT
|
右箭头键
|
鼠标操作(ActionChains 类)
在 Selenium 中,鼠标操作主要通过
ActionChains
类来实现。
ActionChains
类允许我们执行复杂的鼠标操作,如点击、双击、右键点击、拖放和悬停等。
点击、双击、右键点击
点击(Click)
:模拟鼠标左键点击操作。
双击(Double Click)
:模拟鼠标左键双击操作。
右键点击(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 等)
特殊键操作是指模拟按下键盘上的特殊键,如
Enter
、
Tab
、
Shift
等。
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
(
)