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 对绝大多数前端控件的基本操作,结合具体场景灵活组合即可实现复杂自动化流程。

相关推荐
Nayana3 小时前
Element-Plus源码分析--form组件
前端
Bellafu6663 小时前
下载selenium-ide及使用
ide·selenium·测试工具
将车2443 小时前
自动化测试脚本环境搭建
python·测试工具·自动化
海祁3 小时前
【python学习】文件操作
python·学习
jianqiang.xue3 小时前
单片机图形化编程:课程目录介绍 总纲
c++·人工智能·python·单片机·物联网·青少年编程·arduino
littleboyck4 小时前
VSCode 全自动调试Vue/React项目
前端·visual studio code
Siren_dream4 小时前
python进阶_Day8
开发语言·python
姬嘉晗-19期-河北工职大4 小时前
HCL设备启动失败
python·终端·anaconda·解释器
淬炼之火4 小时前
基于pycharm和anaconda的yolo简单部署测试
python·深度学习·yolo·pycharm·ultralytics