Selenium 操作表单选择控件【selenium】

🔘 一、操作 Radio 单选框

Radio 按钮是网页表单中常见的控件之一,用于从多个选项中选择一个。Selenium 中可以使用 click() 方法模拟点击行为。

示例场景

HTML 示例:

复制代码
<input type="radio" name="teacher" value="小江老师">小江老师<br>
<input type="radio" name="teacher" value="小雷老师">小雷老师<br>
<input type="radio" name="teacher" value="小凯老师" checked="checked">小凯老师

步骤:

  1. 获取当前被选中的单选按钮;

  2. 输出其值;

  3. 选择"小雷老师"。

    element = wd.find_element(By.CSS_SELECTOR, '#s_radio input[name="teacher"]:checked')
    print("当前选中老师是:", element.get_attribute('value'))

    wd.find_element(By.CSS_SELECTOR, '#s_radio input[value="小雷老师"]').click()

🔍说明::checked 是 CSS 的伪类选择器,可用于获取已被选中的 radiocheckbox 元素。


☑️ 二、操作 Checkbox 多选框

Checkbox 与单选框不同,它允许多选。使用 click() 方法同样可以勾选或取消勾选,但需注意:避免重复点击导致误操作

示例 HTML:

复制代码
<input type="checkbox" name="teacher" value="小江老师">小江老师<br>
<input type="checkbox" name="teacher" value="小雷老师">小雷老师<br>
<input type="checkbox" name="teacher" value="小凯老师" checked="checked">小凯老师

操作策略:

  • 先取消已勾选的项;

  • 再选择想要的项目,例如"小雷老师"。

    取消已有选中的所有项

    selected = wd.find_elements(By.CSS_SELECTOR, '#s_checkbox input[name="teacher"]:checked')
    for item in selected:
    item.click()

    勾选小雷老师

    wd.find_element(By.CSS_SELECTOR, "#s_checkbox input[value='小雷老师']").click()

📌 提醒:Checkbox 一次点击会切换选中状态,操作前最好确认当前状态。


🔽 三、操作 Select 下拉框

<select> 是专门用于下拉菜单的标签。Selenium 提供了 Select 类来操作这类控件,支持单选或多选。

常用方法:

  • select_by_value(value):根据 value 属性值选中;
  • select_by_index(i):按索引选择,从 0 开始;
  • select_by_visible_text(text):按文本内容选择;
  • deselect_* 方法族用于取消选择,仅对 多选框 有效;
  • deselect_all():取消所有已选项(多选专用)。

✅ 单选框操作

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

select = Select(wd.find_element(By.ID, "ss_single"))
select.select_by_visible_text("小雷老师")

即便有其他项已被选中,也会自动替换,无需手动清除。


✅ 多选框操作

多选框需要在选择前清空已有的选中项,否则可能出现冲突。

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

select = Select(wd.find_element(By.ID, "ss_multi"))

# 清空原选项
select.deselect_all()

# 选择多个老师
select.select_by_visible_text("小雷老师")
select.select_by_visible_text("小凯老师")

🧠 小结

|----------|----------------|----------------------------|---------------|
| 控件类型 | 定位方式 | 操作方式 | 注意事项 |
| radio | CSS + :checked | click() | 同组只能选一个 |
| checkbox | CSS + :checked | 判断状态再 click() | 多选,避免重复点击取消选择 |
| select | Select 类封装方法 | select_by_* / deselect_* | 多选框需先清空再多选 |

以上就是 Selenium 中对表单元素进行自动化操作的常见方法和注意点。

相关推荐
qq_16111127几秒前
Pillow项目深度解析:Python图像处理的终极武器
图像处理·python·pillow·开源库·历史解析
梅孔立几秒前
Pi-Agent 终极极简配置文档(Java+Vue+Python爬虫 4-5千文件项目)
java·vue.js·python
Vcaker2 分钟前
Linux学习22-openstack部署与使用
linux·运维·学习
李可以量化5 分钟前
Redis Client 从了解到精通(二)下:String 类型进阶操作全解
redis·git·python·量化交易·qmt
小周学学学8 分钟前
vmware-horizon第四章:事件数据库配置(docker)
运维·docker·容器
leisoo809714 分钟前
财报舞弊预警系统实战用Python挖掘应收存货异常因子 IG50免费开源股票数据API接口
开发语言·python
姓刘的哦33 分钟前
STM32的启动流分析
linux·运维·arm开发
2601_9494999436 分钟前
芯瑞科技 DT‑1414完全兼容HFBR‑1414TZ光模块国产化优选方案深度解析(工程师视角)
运维·网络·人工智能·科技·光模块
一路向北finish39 分钟前
《CentOS7 OpenStack Mitaka 全栈部署实战:双节点搭建全流程与典型故障排坑指南》
运维·mysql·serverless·云计算·openstack
XUEYUAN521242 分钟前
代理日志分析与监控:代理池健康状态巡检与分级告警体系搭建(运维实战)
运维·网络·网络协议·tcp/ip·算法·架构