[特殊字符] Selenium 实战教程:等待与表单元素操作

Selenium 是 Web 自动化的利器,但在操作网页时,我们经常会遇到元素未加载、表单控件多样等情况。今天,我们来详细讲解以下几个重点:

  1. 隐性等待(Implicit Wait)

  2. 单选框(Radio Button)操作

  3. 多选框(Checkbox)操作

  4. 下拉框(Select)操作


1️⃣ 隐性等待(Implicit Wait)

在 Selenium 中,元素可能需要时间加载,直接操作可能报错。隐性等待就是告诉浏览器:

等一等,最多等 X 秒,如果元素出现就继续执行。

复制代码
python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("http://localhost/ecommerce.html")

# 设置隐性等待(全局)
driver.implicitly_wait(10)  # 最多等待10秒

# 寻找元素
login_btn = driver.find_element(By.ID, "login-submit")
login_btn.click()

特点:

  • 设置一次,整个 driver 生命周期有效

  • 等待时间内元素一旦出现就立即执行

  • 简单易用,但不适合复杂条件


2️⃣ 单选框(Radio Button)操作

单选框通常用来选择一个固定选项。例如:选择用户角色 管理员普通用户

python 复制代码
# 假设 HTML:
# <input type="radio" name="role" value="admin">
# <input type="radio" name="role" value="user">

radio_buttons = driver.find_elements(By.NAME, "role")
for rb in radio_buttons:
    if rb.get_attribute("value") == "admin":
        rb.click()  # 选中管理员

Tips:

  • get_attribute("checked") 可以判断当前是否被选中

  • name 属性通常相同,value 用于区分选项


3️⃣ 多选框(Checkbox)操作

多选框可以同时选择多个选项。例如:商品管理页面中选中多行用户。

复制代码
python 复制代码
# 假设 HTML:
# <input type="checkbox" class="user-select" data-id="u123">

checkboxes = driver.find_elements(By.CLASS_NAME, "user-select")

# 选中全部
for cb in checkboxes:
    if not cb.is_selected():
        cb.click()

# 取消选中
for cb in checkboxes:
    if cb.is_selected():
        cb.click()

注意事项:

  • is_selected() 判断当前状态

  • 多选框可以同时选择多个选项


4️⃣ 下拉框(Select)操作

HTML 的 <select> 元素可以通过 Select 类操作。

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

# 假设 HTML:
# <select id="user-role">
#   <option value="admin">管理员</option>
#   <option value="user">普通用户</option>
# </select>

select = Select(driver.find_element(By.ID, "user-role"))

# 根据 value 选择
select.select_by_value("admin")

# 根据可见文本选择
select.select_by_visible_text("普通用户")

# 根据索引选择(从0开始)
select.select_by_index(0)

Tips:

  • 单选下拉和多选下拉都适用

  • 多选下拉可以 select.select_by_value("xxx") 多次

相关推荐
卓码软件测评28 分钟前
CMA-CNAS软件测评报告机构【Apifox动态Mock响应处理复杂业务逻辑设计】
测试工具·性能优化·单元测试·测试用例
小白学大数据32 分钟前
使用 Selenium 爬取京东手机销量与评分数据 (1)
爬虫·selenium·测试工具·智能手机
卓码软件测评1 小时前
第三方CMA.CNAS软件评测机构【深入理解Apifox的数据模型:定义和管理API数据结构】
测试工具·ci/cd·测试用例
程序员三藏1 小时前
单元测试详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
LongtengGensSupreme2 小时前
后端设置了跨域但是还是提示跨域问题,原因是这里有两个独立的安全策略在起作用:Chrome和Edge浏览器安全策略强制修改方案
前端·chrome·edge·浏览器·跨域
可可南木17 小时前
3070文件格式--2--board文件格式详解 2
功能测试·测试工具·pcb工艺
测试老哥19 小时前
2026最新软件测试面试热点问题(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
sww_102620 小时前
JVM基础学习
jvm·学习·测试工具
ysn1111120 小时前
.NET性能测试工具BenchmarkDotNet
测试工具·c#