选择框
掌握下拉选择框的标准操作方法
能处理单选框、复选框的选中与判断
区分原生选择框和自定义选择框的处理方式
核心讲解
(1)下拉选择框(Select)原生的<select>标签,Selenium 提供了专门的Select类来处理,不要直接点击。
Select 类常用方法:
.select_by_index(n):按索引选择,从 0 开始.select_by_value("值"):按 value 属性选择.select_by_visible_text("文本"):按可见文本选择.options:获取所有选项,返回列表.first_selected_option:获取当前选中的选项
直接用click()点击选中,用is_selected()判断是否选中。
勾选:点击未选中的框
取消勾选:点击已选中的框
全选 / 反选:遍历所有复选框,根据状态判断是否点击
注意:现在很多网站是用 div 模拟的下拉框,不是原生 select,不能用 Select 类,要当成普通元素点击。
代码示例
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
import time
driver = webdriver.Chrome()
driver.maximize_window()
# 打开测试页面
driver.get("file:///test_select.html") # 本地测试页
# ===== 下拉选择框 =====
select_ele = driver.find_element(By.ID, "city")
# 创建Select对象
city_select = Select(select_ele)
# 1. 按索引选
city_select.select_by_index(1)
time.sleep(1)
# 2. 按value选
city_select.select_by_value("sh")
time.sleep(1)
# 3. 按可见文本选
city_select.select_by_visible_text("广州")
# 获取所有选项
all_options = city_select.options
print("所有城市:", [opt.text for opt in all_options])
# 获取当前选中
print("当前选中:", city_select.first_selected_option.text)
# ===== 单选框 =====
radio_male = driver.find_element(By.ID, "male")
radio_female = driver.find_element(By.ID, "female")
# 点击选中
radio_female.click()
print("女是否选中:", radio_female.is_selected())
# ===== 复选框 =====
hobby_list = driver.find_elements(By.NAME, "hobby")
# 全选
for hobby in hobby_list:
if not hobby.is_selected():
hobby.click()
time.sleep(1)
# 取消第一个
hobby_list[0].click()
print("选中数量:", sum(1 for h in hobby_list if h.is_selected()))
driver.quit()
常见误区
div 模拟下拉框用 Select 类:会报错,只有原生 select 标签才能用 Select 类
select 索引从 1 开始:index 是从 0 开始,和 CSS 的 nth-child 不一样
复选框重复点击:不判断状态直接点,会把选中的取消
下拉选项没加载就选:动态加载的下拉,要等选项加载完再选
课后练习
编写脚本:处理一个下拉框,依次选择所有选项并打印
实现复选框的全选、反选、全不选三个操作
思考:怎么判断一个下拉框是原生 select 还是 div 模拟的?

