键盘操作练习 · 单键

send_keys / ActionChains 均可 — TAB 焦点切换 · ESC 关闭浮窗 · 其他常用单键,共 3 题

首页 键盘操作导航

练习说明

单键 组合键

单键操作

📋 练习要求 · 单键操作(TAB / ESC / 其他常用单键)
概念单键是 send_keys 最基础用法,用 Keys 常量发送单个功能键:TAB / ESCAPE / BACKSPACE / DELETE / HOME / END / ENTER / ARROW_* 等;WebElement.send_keys 自动聚焦,ActionChains 需先 click()
Selenium APIelement.send_keys(Keys.XXX) 或 ActionChains(driver).send_keys(Keys.XXX).perform()
练习要点
  • WebElement.send_keys() 自动聚焦,ActionChains.send_keys() 需先 click() 聚焦
  • Keys.TAB 按 HTML taborder 跳到下一个可聚焦元素,不受页面 CSS 影响
  • Keys.ESCAPE 常用于关闭弹窗、下拉、浮窗、模态框
  • Keys.BACKSPACE 删除光标前字符,Keys.DELETE 删除光标后字符
  • Keys.HOME / Keys.END 跳到行首/行尾,Keys.ENTER 提交或换行
# 快速参考 · TAB 焦点切换
from selenium.webdriver.common.keys import Keys
field1 = driver.find_element(By.CSS_SELECTOR, ".tab-field[data-idx='1'] input")
field1.click()
for _ in range(3):
    field1.send_keys(Keys.TAB)

# 快速参考 · ESC 关闭浮窗
search = driver.find_element(By.ID, "kb_search_esc")
search.click()
search.send_keys(Keys.ESCAPE)

# 快速参考 · 其他常用单键(BACKSPACE/DELETE/HOME/END/ENTER)
inp = driver.find_element(By.ID, "multi_key_input")
inp.click()
inp.send_keys(Keys.HOME)             # 光标到行首
inp.send_keys(Keys.ARROW_RIGHT)      # 右移一格
inp.send_keys(Keys.BACKSPACE)        # 删除光标前字符
inp.send_keys(Keys.END)              # 光标到行尾
inp.send_keys(Keys.DELETE)           # 删除光标后字符
inp.send_keys(Keys.ENTER)            # 换行/提交
📋 本节练习清单
  • ✅ 练习目标 1:Keys.TAB — 定位「姓名」字段 → click() 聚焦 → 连续 send_keys(Keys.TAB) 三次 → 断言焦点落到「邮箱」
  • ✅ 练习目标 2:Keys.ESC — 聚焦搜索框触发浮窗 → Keys.ESCAPE → 断言浮窗不可见
  • ✅ 练习目标 3:其他单键 — 输入框中依次发送 HOME / ARROW_RIGHT / BACKSPACE / END / DELETE / ENTER → 断言光标位置与文本变化
1 练习目标:Keys.TAB 连续切换焦点(连按 3 次 → 落到第 4 个字段)

操作步骤:
① 定位「姓名」输入框 → click() 聚焦;
② 连续发送 Keys.TAB 三次;
③ 断言焦点结果区的「当前焦点」文本包含「邮箱」。

Tab 焦点切换区(依次按 Tab 观察焦点)
当前焦点:未聚焦
查看参考答案
# 练习 1 · Keys.TAB 连续切换焦点
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 启动浏览器并打开页面
driver = webdriver.Chrome()
driver.get("https://autotest-505.pages.dev/keyboard_op_practice.html")

# 1. 聚焦第 1 个字段
field1 = driver.find_element(By.CSS_SELECTOR, ".tab-field[data-idx='1'] input")
field1.click()

# 2. 连按 3 次 TAB(写法 A:WebElement)
for _ in range(3):
    field1.send_keys(Keys.TAB)

# 写法 B:ActionChains(需先 click 聚焦)
from selenium.webdriver.common.action_chains import ActionChains
for _ in range(3):
    ActionChains(driver).send_keys(Keys.TAB).perform()

# 3. 断言焦点在邮箱
focus_text = driver.find_element(By.ID, "focus_name").text
assert "邮箱" in focus_text

# 关闭浏览器
driver.quit()
2 练习目标:Keys.ESC 关闭搜索候选浮窗

操作步骤:
① 定位 #kb_search_esc → click() 触发候选浮窗出现;
② 等待候选浮窗 #kb_search_esc_dd 可见;
③ 发送 Keys.ESCAPE → 断言浮窗不可见。

搜索框(聚焦弹出候选 · ESC 关闭)
等待搜索框聚焦...
查看参考答案
# 练习 2 · Keys.ESC 关闭浮窗
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 启动浏览器并打开页面
driver = webdriver.Chrome()
driver.get("https://autotest-505.pages.dev/keyboard_op_practice.html")

search = driver.find_element(By.ID, "kb_search_esc")
dd_locator = (By.ID, "kb_search_esc_dd")
wait = WebDriverWait(driver, 5)

# 1. 聚焦 → 候选出现
search.click()
wait.until(EC.visibility_of_element_located(dd_locator))

# 2. ESC 关闭
search.send_keys(Keys.ESCAPE)

# 3. 断言消失
wait.until(EC.invisibility_of_element_located(dd_locator))

# 关闭浏览器
driver.quit()
3 练习目标:其他常用单键(HOME / END / BACKSPACE / DELETE / ENTER / ARROW)

操作步骤:
① 定位 #multi_key_input → click() 聚焦;
② 依次发送:Keys.HOME(行首)→ Keys.ARROW_RIGHT(右移)→ Keys.BACKSPACE(删前)→ Keys.END(行尾)→ Keys.DELETE(删后)→ Keys.ENTER(换行);
③ 断言文本内容发生变化且光标位置正确。

多单键练习区(按不同单键观察文本与光标变化)
光标位置:0 / 选中文本长度:0
⌨️ 按键日志:等待按键...
查看参考答案
# 练习 3 · 其他常用单键
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 启动浏览器并打开页面
driver = webdriver.Chrome()
driver.get("https://autotest-505.pages.dev/keyboard_op_practice.html")

inp = driver.find_element(By.ID, "multi_key_input")
inp.click()
original = inp.get_attribute("value")

# 1. HOME → 行首
inp.send_keys(Keys.HOME)
assert inp.get_attribute("selectionStart") == "0"

# 2. ARROW_RIGHT → 右移一格
inp.send_keys(Keys.ARROW_RIGHT)
assert inp.get_attribute("selectionStart") == "1"

# 3. BACKSPACE → 删除光标前字符
inp.send_keys(Keys.BACKSPACE)
assert inp.get_attribute("value") == original[1:]

# 4. END → 行尾
inp.send_keys(Keys.END)
assert inp.get_attribute("selectionStart") == str(len(inp.get_attribute("value")))

# 5. DELETE → 删除光标后字符(行尾无字符可删)
# 6. ENTER → 换行
inp.send_keys(Keys.ENTER)
assert "\n" in inp.get_attribute("value")

# 关闭浏览器
driver.quit()

关于我们

Python 自动化测试学习平台是一个面向软件测试工程师、开发人员及在校学生的交互式在线学习平台,专注于 Selenium WebDriver 与 Python unittest 自动化测试技能的教学与实践。

我们以"理论 + 实战 + 可交互演示"为核心特色,将八种常规元素定位和Javascript定位、元素操作、自动化测试工具、单元测试、测试模型等知识体系拆分为模块化课程,每个模块都配有可点击、可输入、可运行的模拟练习页面。

平台致力于降低自动化测试的入门门槛,让学习者从"看懂代码"到"动手实操",逐步掌握企业级自动化测试框架的设计与落地能力。

联系方式

📧邮箱:lq@selenium-auto-test.com

📞电话:0755-12345678

📍地址:深圳

💬微信公众号:Selenium自动化测试

🐙GitHub:github.com/selenium-auto-test

免责声明

1. 本平台所有示例代码、演示页面及教程内容均仅供学习交流使用,不构成任何商业推广或技术服务承诺。

2. 平台中的 Selenium API 描述、Python 语法说明均以官方文档为准,如有版本差异请以对应官方文档为准。

3. 学习者在实际项目中应用平台所学内容时,应结合自身项目环境进行充分测试,本平台不对因直接使用示例代码而产生的任何直接或间接损失承担责任。

4. 本平台所引用的第三方库(Selenium、ChromeDriver、unittest 等)版权归其各自作者及维护者所有。

5. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。