添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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 ( )