selenium对每种前端控件的操作,python举例

以下通过豆包整理,仅做记录

Selenium 对前端常用控件的操作方式各有特点,以下是针对不同类型控件的典型操作方法(以 Python 为例):

1. 输入类控件

<input>(文本 / 密码 / 数字等输入框)
  • 操作:输入文本、清空内容、获取值

python

运行

复制代码
# 定位元素
input_element = driver.find_element(By.ID, "username")

# 输入文本
input_element.send_keys("test_user")

# 清空内容
input_element.clear()

# 获取当前值
value = input_element.get_attribute("value")
<textarea>(多行文本框)
  • 操作:输入多行文本、清空、获取内容

python

运行

复制代码
textarea = driver.find_element(By.NAME, "description")

# 输入多行文本
textarea.send_keys("第一行文本\n第二行文本")

# 清空
textarea.clear()

# 获取内容
content = textarea.get_attribute("value")

2. 选择类控件

<select> + <option>(下拉选择框)
  • 操作:选择选项(通过索引、可见文本、值)

python

运行

复制代码
from selenium.webdriver.support.ui import Select

select_element = Select(driver.find_element(By.ID, "city"))

# 通过索引选择(索引从0开始)
select_element.select_by_index(2)

# 通过可见文本选择
select_element.select_by_visible_text("北京")

# 通过option的value属性选择
select_element.select_by_value("shanghai")

# 取消所有选择(仅适用于multiple=True的下拉框)
select_element.deselect_all()

# 获取所有选中的选项
selected_options = select_element.all_selected_options
<input type="checkbox">(复选框)
  • 操作:勾选、取消勾选、判断是否选中

python

运行

复制代码
checkbox = driver.find_element(By.NAME, "agree")

# 勾选(如果未选中)
if not checkbox.is_selected():
    checkbox.click()

# 取消勾选(如果已选中)
if checkbox.is_selected():
    checkbox.click()

# 判断是否选中
is_checked = checkbox.is_selected()
<input type="radio">(单选框)
  • 操作:选择指定选项

python

运行

复制代码
# 选择value为"male"的单选框
radio_male = driver.find_element(By.CSS_SELECTOR, "input[value='male']")
radio_male.click()

3. 按钮类控件

<button><input type="submit">
  • 操作:点击按钮

python

运行

复制代码
# 定位提交按钮并点击
submit_btn = driver.find_element(By.ID, "submit-btn")
submit_btn.click()

# 有时需要处理点击后页面加载,可配合等待
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待按钮可点击后再点击
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "submit-btn"))
).click()

4. 媒体类控件

<img>(图片)
  • 操作:获取图片信息、点击图片(如果有链接)

python

运行

复制代码
image = driver.find_element(By.CSS_SELECTOR, "img.logo")

# 获取图片URL
image_url = image.get_attribute("src")

# 获取替代文本
alt_text = image.get_attribute("alt")

# 点击图片(如果图片包裹在<a>标签中或有点击事件)
image.click()
<video>(视频)
  • 操作:播放、暂停(通过 JavaScript 执行)

python

运行

复制代码
video = driver.find_element(By.TAG_NAME, "video")

# 播放视频
driver.execute_script("arguments[0].play()", video)

# 暂停视频
driver.execute_script("arguments[0].pause()", video)

# 获取视频时长
duration = driver.execute_script("return arguments[0].duration", video)

5. 容器与链接类

<div>/<span>(容器)
  • 操作:获取文本、点击(如果有交互)

python

运行

复制代码
div_element = driver.find_element(By.CLASS_NAME, "info-box")

# 获取文本内容
text = div_element.text

# 点击容器(如果绑定了点击事件)
div_element.click()
<a>(超链接)
  • 操作:点击跳转、获取链接地址

python

运行

复制代码
link = driver.find_element(By.LINK_TEXT, "帮助中心")

# 点击链接
link.click()

# 获取链接地址
href = link.get_attribute("href")

6. 表单类

<form>(表单)
  • 操作:提交表单、重置表单

python

运行

复制代码
form = driver.find_element(By.ID, "login-form")

# 提交表单(等价于点击提交按钮)
form.submit()

# 重置表单(清空输入内容)
form.reset()

7. 文件上传控件

<input type="file">
  • 操作:上传本地文件(需传入文件绝对路径)

python

运行

复制代码
file_input = driver.find_element(By.ID, "avatar-upload")

# 上传文件(直接传入本地文件路径)
file_input.send_keys("/Users/test/avatar.jpg")

关键注意事项

  1. 元素交互前需确保可见 / 可点击 :使用显式等待(WebDriverWait)避免因元素未加载导致的错误。
  2. 处理动态元素 :若元素属性动态变化,优先使用稳定的定位方式(如 XPath 文本定位、层级定位)。
  3. 特殊控件处理:对于复杂控件(如日期选择器、自定义下拉框),可通过直接设置属性或执行 JavaScript 操作。

通过上述方法,可覆盖 Selenium 对绝大多数前端控件的基本操作,结合具体场景灵活组合即可实现复杂自动化流程。

相关推荐
xywww16810 小时前
大模型 API 选型实战:GPT、Gemini、Claude 接入时该看哪些指标?
运维·服务器·人工智能·python·gpt·langchain
夜雪一千14 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
能有时光15 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
随风一样自由15 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
_Jimmy_15 小时前
Python 协程库如何使用以及有哪些使用场景
python
IMPYLH16 小时前
HTML 的 <data> 元素
前端·html
aqi0016 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
YHHLAI16 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
第一程序员16 小时前
Rust Agent 子进程执行:Command 之前,先定义输入和超时
python·rust·github
skywalk816316 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程