send_keys / ActionChains 均可 — Ctrl 复制粘贴 · 富文本格式化 · 三键链式 · 综合(单键+组合键),共 3 题
el.send_keys(Keys.CONTROL, "a") ;三键 ActionChains.key_down(CONTROL).key_down(SHIFT).send_keys("z").key_up(SHIFT).key_up(CONTROL).perform()# 快速参考 · 双键 Ctrl+A/C/V 复制粘贴 from selenium.webdriver.common.keys import Keys import time src = driver.find_element(By.ID, "clip_src") dst = driver.find_element(By.ID, "clip_dst") src.click() src.send_keys(Keys.CONTROL, "a") # 全选 src.send_keys(Keys.CONTROL, "c") # 复制 time.sleep(0.3) dst.click() dst.send_keys(Keys.CONTROL, "v") # 粘贴 assert dst.get_attribute("value") == src.get_attribute("value") # 快速参考 · 三键 Ctrl+Shift+Z 链式 from selenium.webdriver.common.action_chains import ActionChains edit = driver.find_element(By.ID, "editBox") edit.click() edit.send_keys(Keys.CONTROL, "b") # 双键:隐式处理 ActionChains(driver) \ .key_down(Keys.CONTROL) \ .key_down(Keys.SHIFT) \ .send_keys("z") \ .key_up(Keys.SHIFT) \ .key_up(Keys.CONTROL) \ .perform()
操作步骤:
① 聚焦 #clip_src:Ctrl+A 全选 → Ctrl+C 复制;
② 聚焦 #clip_dst:Ctrl+V 粘贴,断言两框内容相同;
③ 再 Ctrl+Z 撤销。
# 练习 1 · Ctrl 组合键 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # 启动浏览器并打开页面 driver = webdriver.Chrome() driver.get("https://autotest-505.pages.dev/keyboard_op_practice.html") src = driver.find_element(By.ID, "clip_src") dst = driver.find_element(By.ID, "clip_dst") dst.clear() # 写法 A:element.send_keys(双键修饰键自动隐式 key_down/up) src.click() src.send_keys(Keys.CONTROL, "a") src.send_keys(Keys.CONTROL, "c") time.sleep(0.3) dst.click() dst.send_keys(Keys.CONTROL, "v") time.sleep(0.3) assert dst.get_attribute("value") == src.get_attribute("value") dst.send_keys(Keys.CONTROL, "z") # 写法 B:ActionChains 链式 from selenium.webdriver.common.action_chains import ActionChains src.click() ActionChains(driver).send_keys(Keys.CONTROL, "a").send_keys(Keys.CONTROL, "c").perform() # 注:macOS 用 Keys.COMMAND 替换 Keys.CONTROL # 关闭浏览器 driver.quit()
操作步骤:
① 聚焦 #editBox → 输入文字,选中一部分;
② Ctrl+B 加粗(浏览器触发 execCommand);
③ 发送三键 Ctrl+Shift+Z 重做(必须 ActionChains 显式 key_down/key_up)。
# 练习 2 · 富文本 Ctrl+B/I/U + Ctrl+Shift+Z 三键 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_practice.html") edit = driver.find_element(By.ID, "editBox") # 1. 输入文本 edit.click() edit.clear() edit.send_keys("自动化测试 Selenium 富文本练习") # 2. 双键 Ctrl+B(两种写法都能) edit.send_keys(Keys.CONTROL, "b") ActionChains(driver).click(edit).send_keys(Keys.CONTROL, "b").perform() # 3. 三键 Ctrl+Shift+Z(必须 ActionChains 显式 key_down/key_up) # 物理键盘逻辑:先按的后松 ActionChains(driver) \ .key_down(Keys.CONTROL) \ .key_down(Keys.SHIFT) \ .send_keys("z") \ .key_up(Keys.SHIFT) \ .key_up(Keys.CONTROL) \ .perform() # 4. 断言工具栏按钮高亮 bold_btn = driver.find_element(By.CSS_SELECTOR, ".edit-toolbar button[data-cmd='bold']") assert "active" in bold_btn.get_attribute("class") # 关闭浏览器 driver.quit()
操作步骤:
① Keys.TAB 依次在「姓名→邮箱→备注」间切换并输入内容;
② 在备注框中 Ctrl+A 全选 → Ctrl+C 复制;
③ Keys.HOME 回到行首 → Ctrl+V 粘贴 → Keys.ENTER 换行;
④ Ctrl+Z 撤销,断言文本恢复。
# 练习 3 · 综合练习(单键 + 组合键) from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time # 启动浏览器并打开页面 driver = webdriver.Chrome() driver.get("https://autotest-505.pages.dev/keyboard_op_practice.html") name = driver.find_element(By.ID, "combo_name") email = driver.find_element(By.ID, "combo_email") note = driver.find_element(By.ID, "combo_note") # 1. 单键 TAB 切换 + 输入 name.click() name.send_keys("张三") name.send_keys(Keys.TAB) # Tab 切到邮箱 email.send_keys("zhangsan@example.com") email.send_keys(Keys.TAB) # Tab 切到备注 note.send_keys("这是一段综合练习的备注文本") # 2. 组合键 Ctrl+A 全选 + Ctrl+C 复制 note.send_keys(Keys.CONTROL, "a") note.send_keys(Keys.CONTROL, "c") time.sleep(0.3) # 3. 单键 HOME 到行首 + 组合键 Ctrl+V 粘贴 + Enter 换行 note.send_keys(Keys.HOME) note.send_keys(Keys.CONTROL, "v") note.send_keys(Keys.ENTER) time.sleep(0.3) # 4. 组合键 Ctrl+Z 撤销 original = "这是一段综合练习的备注文本" note.send_keys(Keys.CONTROL, "z") time.sleep(0.3) assert note.get_attribute("value") == original # 关闭浏览器 driver.quit()