练习 send_keys 输入、Ctrl+A/C/V/X 组合键、ENTER/TAB/ESC/BACKSPACE/DELETE 等常用按键。
本页仅演示组合键操作:Ctrl+A/B/I/U/C/X/Z/Y 双键 + Ctrl+Shift+Z 三键链式。
跳转至 单键操作 查看 ENTER / TAB / ESC 等单键演示。
💡 学习路径:
⚠️ 注意:不同浏览器对某些特殊键(如 Keys.PAUSE / Keys.SHIFT)的行为可能略有差异,脚本中建议先聚焦再按键。
el.send_keys(Keys.CONTROL, "a") —— 简单组合,直接在元素上调用ActionChains(driver).key_down(Keys.CONTROL).send_keys("c").key_up(Keys.CONTROL).perform() —— 适合复杂链式操作,如同时按 Ctrl+Shift+T
组合键速查 — Ctrl/Shift/Alt 与字母/数字组合,send_keys 逗号传参或 ActionChains 链式
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains driver = webdriver.Chrome() driver.get("https://autotest-505.pages.dev/keyboard_op_tech.html") # ===================================================== # 组合键目标:editBox(contenteditable 富文本编辑器) # 顶部工具栏:B(加粗) / I(斜体) / U(下划线) / ↶(撤销) / ↷(重做) # 每个按钮对应一个标准 Ctrl+字母 组合键 # ===================================================== el = driver.find_element(By.ID, "editBox") # ★ contenteditable div 没有 tabindex → 默认不可 Tab 聚焦 # → 必须显式 click() 让它成为 activeElement el.click() el.send_keys("Hello Selenium 组合键练习") # 先输入文本,后续全选/格式化才有内容 # ===================================================== # 方式一:element.send_keys(Keys.CONTROL, "a") # · Selenium 自动 focus 元素 + 构造修饰键按下顺序 # · 逗号分隔多参数 = "同时按下" 效果 # · 简洁写法,适合双键组合 # ===================================================== el.send_keys(Keys.CONTROL, "a") # Ctrl+A 全选 el.send_keys(Keys.CONTROL, "b") # Ctrl+B 加粗 ← 对应工具栏 B el.send_keys(Keys.CONTROL, "i") # Ctrl+I 斜体 ← 对应工具栏 I el.send_keys(Keys.CONTROL, "u") # Ctrl+U 下划线 ← 对应工具栏 U el.send_keys(Keys.CONTROL, "c") # Ctrl+C 复制(带格式的富文本) # ===================================================== # 方式二:ActionChains 链式 —— 模拟真实按键按下/松开 # · key_down 按住修饰键 → send_keys 末键 → 逆序 key_up # · 更接近物理键盘行为 # · 三键/四键组合 必须用这种写法 # · ⚠️ 别忘了 .perform(),否则所有动作静默不执行 # ===================================================== # Ctrl+X 剪切(双键也可以用链式,演示两种写法) ActionChains(driver)\ .click(el)\ .send_keys(Keys.CONTROL, "x")\ .perform() # Ctrl+Z 撤销(回到初始文本)← 对应工具栏 ↶ Undo ActionChains(driver)\ .click(el)\ .send_keys(Keys.CONTROL, "z")\ .perform() # Ctrl+Y 重做 ← 对应工具栏 ↷ Redo ActionChains(driver)\ .click(el)\ .send_keys(Keys.CONTROL, "y")\ .perform() # === 三键组合的正确写法:显式 key_down/key_up === # Selenium 方式一的 send_keys 多参数 底层也是这个逻辑, # 这里手写出来是为了让你看清"先按的后松"的物理键盘顺序 ActionChains(driver)\ .click(el)\ .key_down(Keys.CONTROL)\ # 按住 Ctrl .key_down(Keys.SHIFT)\ # 按住 Shift(比 Ctrl 晚按) .send_keys("z")\ # 按末键 Z .key_up(Keys.SHIFT)\ # 逆序松开:先松 Shift .key_up(Keys.CONTROL)\ # 最后松 Ctrl .perform() # Ctrl+Shift+Z = 多数编辑器的"重做" print("✅ 组合键演示完成(Ctrl+A/B/I/U/C/X/Z/Y + Ctrl+Shift+Z 三键链式)") driver.quit()