点击、输入、清空及可见性判断等元素交互操作
click() vs submit() vs Keys.ENTER,send_keys 清旧值再输入
el.click() · el.send_keys() · el.clear() · el.submit() · Keys.ENTER元素定位后最常用的三件套:点击、输入、清空;配合 get_attribute / is_displayed / is_enabled 查询状态。
.click() 点击
.send_keys() 输入(⚠️ 追加)
.clear() 清空
.get_attribute() 读属性
.is_displayed() 是否可见
.is_enabled() 是否可用
el.send_keys(Keys.CONTROL, "a") 全选后再输入。
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 定位。
By.ID, "hwForm"
By.ID, "hwUsername"
By.ID, "hwEmail"
By.NAME, "gender"
By.NAME, "hobby"
By.ID, "hwCity"
By.ID, "hwBio"
By.ID, "hwSubmit"
driver.get() 打开本 HTML 页面 → 定位实战表单的 用户名输入框 → send_keys("李白") → get_attribute("value") 读回 → 验证两者一致safe_click(el) 包装函数:先判断 is_displayed() 和 is_enabled(),再 click;异常时打印元素的 tag_name + get_attribute('id') + get_attribute('class') —— 用 提交 按钮测试用户名输入框 里连续调 send_keys("a") send_keys("b") send_keys("c"),验证它是追加不是替换;再 clear() 清空输入框表单 里的 用户名输入框,分别调 el.submit() / driver.find_element(By.ID,"hwSubmit").click() / el.send_keys(Keys.ENTER),对比三种触发表单提交的行为差异(页面底部都会显示「表单已提交」)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 的"发送到元素"区别