浏览器操作作业 · 元素交互

点击、输入、清空及可见性判断等元素交互操作

首页 浏览器操作导航

页面导读 · 元素交互

click() vs submit() vs Keys.ENTER,send_keys 清旧值再输入

学习目标
掌握 click/send_keys/clear/submit 四件套,理解三种提交方式的差异
核心 API
el.click() · el.send_keys() · el.clear() · el.submit() · Keys.ENTER
作业数量
4 题基础 · +1 进阶可选
难度:⭐⭐⭐ 中等
⚠️ 前置注意: send_keys 前先 clear() 防止追加;click 前确保元素 visible 且 enabled(否则抛 ElementClickIntercepted)
参数配置 打开关闭 页面导航 窗口控制 页面信息 元素交互 Cookie操作 截图保存 超时等待

操作 6:元素交互 click · send_keys · clear

元素定位后最常用的三件套:点击、输入、清空;配合 get_attribute / is_displayed / is_enabled 查询状态。

元素交互三件套 + 状态查询
.click() 点击 .send_keys() 输入(⚠️ 追加) .clear() 清空 .get_attribute() 读属性 .is_displayed() 是否可见 .is_enabled() 是否可用
⚠️ send_keys 是追加不是替换,输入新内容前记得先 clear();Selenium 4 新增 el.send_keys(Keys.CONTROL, "a") 全选后再输入。

练习目标:操作模拟搜索页,观察元素状态实时变化

https://www.example.com/search
输入关键词后点击「搜索」查看模拟结果...
get_attribute("value")
selenium
is_displayed()
true
is_enabled()
true
tag_name
input
get_attribute("type")
text
get_attribute("placeholder")
输入关键词开始搜索...
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

el = driver.find_element(By.ID, "searchInput")

# === 三件套 ===
el.click()                              # 聚焦并点击
el.send_keys("Python")                  # 输入(追加!)
el.send_keys(Keys.CONTROL, "a")         # 全选
el.send_keys("新内容")                   # 替换(先全选再输入)
el.clear()                              # 清空

# === 状态 / 属性查询 ===
print(el.is_displayed())                # 是否在页面可见
print(el.is_enabled())                  # 是否可交互(非 disabled)
print(el.get_attribute("value"))        # 读 value 属性
print(el.get_attribute("placeholder"))  # 读 placeholder
print(el.tag_name)                      # 标签名 "input"
print(el.text)                          # 可见文本(input 元素通常为空)

# ⚠️ send_keys 是追加!输入前通常先 clear()
# ✅ 最佳实践:el.clear(); el.send_keys("新内容")

# submit() 等价于点击表单里的提交按钮
# el.submit()  # 按 Enter 提交
🛠 下方是「实战演练表单」—— 完成作业就定位这些真实元素 表单内所有元素都写了明确的 id / name 属性,可直接用 By.ID / By.NAME 定位。

实战演练表单 —— 完成作业的元素在这里

📋 Selenium 元素定位速查(全部可用 By.ID 或 By.NAME)
By.ID, "hwForm"
整个 <form>(第 4 题 submit)
By.ID, "hwUsername"
用户名 text 输入框
By.ID, "hwEmail"
邮箱 email 输入框
By.NAME, "gender"
性别 radio
By.NAME, "hobby"
爱好 checkbox(可多选)
By.ID, "hwCity"
城市 select 下拉框
By.ID, "hwBio"
个人简介 textarea
By.ID, "hwSubmit"
submit 按钮(type="submit")

📝 作业要求

  1. 用 Selenium driver.get() 打开本 HTML 页面 → 定位实战表单的 用户名输入框 → send_keys("李白") → get_attribute("value") 读回 → 验证两者一致
  2. 写一个 safe_click(el) 包装函数:先判断 is_displayed() 和 is_enabled(),再 click;异常时打印元素的 tag_name + get_attribute('id') + get_attribute('class') —— 用 提交 按钮测试
  3. 在 用户名输入框 里连续调 send_keys("a") send_keys("b") send_keys("c"),验证它是追加不是替换;再 clear() 清空输入框
  4. submit() vs click() vs Keys.ENTER 区别:定位 表单 里的 用户名输入框,分别调 el.submit() / driver.find_element(By.ID,"hwSubmit").click() / el.send_keys(Keys.ENTER),对比三种触发表单提交的行为差异(页面底部都会显示「表单已提交」)
  5. 进阶 · 可选 ActionChains 键盘组合:先 el.click() 聚焦 用户名输入框 → key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL) 全选 → send_keys("杜甫") 替换内容;对比直接用 el.send_keys(Keys.CONTROL, "a") 的简洁写法,理解 ActionChains 的"发送到 body"和 el.send_keys 的"发送到元素"区别
💡 提示:定位策略优先级 ID > name > class > CSS > XPath,能用 ID 就别用 XPath

关于我们

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. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。