selenium鼠标操作和键盘操作

发布时间 2023-06-28 00:46:37作者: 天才九少

鼠标操作

在 WebDriver 中,与鼠标操作相关的方法都封装在 ActionChains 类中

# 引入 ActionChains 类
from selenium.webdriver import ActionChains

常用方法:

  1. perform():执行 ActionChains 类中存储的所有行为
  2. click():左击
  3. context_click():右击
  4. double_click():双击
  5. move_to_element():鼠标悬停
  6. move_to_element_with_offset():先找到元素,再根据元素位置偏移指定偏移量
  7. click and hold():长按
  8. drag_and_drop():将源元素拖动到目标元素处
  9. drag_and_drop_by_offset(): 将源元素拖动指定偏移量

主要是调用其他操作方法后,都要再次调用这个方法perform(),表示执行某个鼠标操作

from selenium.webdriver import ActionChains
from selenium import webdriver

driver = webdriver.Chrome("../resources/chromedriver.exe")

# 创建实例
chains = ActionChains(driver)

# 访问网址
driver.get("file:///C:/test.html")

# 登录按钮
username = driver.find_element_by_id("username")
login_btn = driver.find_element_by_class_name("login")
password = driver.find_element_by_id("password")

# 左键点击
chains.click(username).perform()

# 右键点击
chains.context_click(username).perform()

# 双击
chains.double_click(password).perform()
# 悬停到设置按钮
chains.move_to_element(login_btn).perform()

# 悬停到指定偏移量
chains.move_to_element_with_offset(login_btn, 2, 2).perform()
# 长按
chains.click_and_hold(login_btn).perform()
# 拖动1
chains.drag_and_drop(source=username, target=password)

# 拖动2
chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)

键盘操作

send_keys()方法除了可以用来模拟键盘输入,还可以用它来输入键盘上 的按键,甚至是组合键,如 Ctrl+a、Ctrl+c 等

在使用键盘按键方法前需要先导入 Keys 类

from selenium.webdriver.common.keys import Keys

示例:

from selenium import webdriver
# 调用 Keys 模块
from selenium.webdriver.common.keys import Keys
driver
= webdriver.Chrome() driver.get("http://www.baidu.com")
# 在输入框输入内容 driver.find_element_by_id("kw").send_keys("selenium")
# 删除多输入的一个 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
# 输入空格键+“教程” driver.find_element_by_id("kw").send_keys(Keys.SPACE) driver.find_element_by_id("kw").send_keys("教程")
# 输入组合键 Ctrl+a,全选输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# 输入组合键 Ctrl+x,剪切输入框内容 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# 输入组合键 Ctrl+v,粘贴内容到输入框 driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
# 用回车键代替单击操作 driver.find_element_by_id("su").send_keys(Keys.ENTER)
driver.quit()

常用的键盘操作

  • 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