You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Selenium Python随机选复选框后,如何统计已选中的数量

随机选择复选框并验证选中数量的实现方案

问题场景

我正在使用Selenium Python随机选择2个复选框,完成选择后,想要验证已选中复选框的数量,请问该如何实现?以下是我的代码:

checkboxes = driver.find_elements(By.XPATH, "//*[@type='checkbox']")
print(len(checkboxes))
for x in range(2):
    opt = random.choice(checkboxes)
    if opt.is_enabled():
        opt.click()

优化与验证方案

你的原代码存在潜在问题:重复随机选择可能会选中同一个复选框(点击两次相当于取消选择),导致最终选中数量可能不是2。下面是修正后的完整实现,包含选择逻辑优化和数量验证:

完整代码

import random
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 先过滤出所有可用的复选框,避免处理不可点击的元素
available_checkboxes = [cb for cb in driver.find_elements(By.XPATH, "//*[@type='checkbox']") if cb.is_enabled()]
print(f"可用复选框总数:{len(available_checkboxes)}")

# 随机挑选2个不重复的复选框
target_checkboxes = random.sample(available_checkboxes, 2)
for cb in target_checkboxes:
    cb.click()

# 等待页面状态稳定,确保复选框状态更新完成
WebDriverWait(driver, 10).until(
    lambda d: len(d.find_elements(By.XPATH, "//*[@type='checkbox' and @checked]")) == 2
)

# 统计已选中的复选框数量
checked_count = len(driver.find_elements(By.XPATH, "//*[@type='checkbox' and @checked]"))
print(f"已选中的复选框数量:{checked_count}")

# 断言验证数量是否符合预期
assert checked_count == 2, f"选中数量异常,实际为{checked_count}"

关键说明

  • 避免重复选择:用random.sample()替代random.choice(),直接从可用列表里抽取2个不重复的元素,确保选中两个不同的复选框
  • 状态等待:加入WebDriverWait等待选中数量变为2,防止页面加载延迟导致统计结果不准确
  • 精准统计:通过//*[@type='checkbox' and @checked]定位已选中的复选框,直接统计数量
  • 断言验证:用assert做最终校验,若数量不符合预期会直接抛出异常,方便测试场景下的结果验证

内容的提问来源于stack exchange,提问作者user47809

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:25