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

Selenium实现字段框动态生成大于1的随机小数输入需求

搞定Selenium输入不重复的大于1的小数需求

嘿,我来给你捋捋怎么实现这个需求——既要生成符合要求的大于1的小数,还得保证每次运行程序(哪怕重启浏览器)输入的数都不重复,甚至你提到输入1.8$系统也能接受,这点也给你考虑到了。

核心思路

关键在于把已经用过的数值存下来,毕竟重启程序后内存里的记录就没了,所以得用本地文件来持久化这些数据,每次生成新数前先检查有没有用过,确保唯一性,同时生成符合要求的随机小数。

具体步骤&代码实现

1. 先搞定持久化存储

我们用一个本地文本文件(比如used_numbers.txt)来存已经用过的数,每次启动程序先读这个文件,生成新数时对比,避免重复。

2. 生成符合要求的随机小数

用Python的random模块生成1.01到你需要的上限(比如100.0)之间的随机小数,还能控制小数位数,比如1位或2位,完全适配系统接受的格式。如果需要加$后缀,直接拼上去就行。

3. Selenium输入逻辑

生成合规且未使用过的数后,先把它存到文件里,再用Selenium定位输入框输入。

给你写个可直接用的示例代码:

import random
from selenium import webdriver
from selenium.webdriver.common.by import By

# 用来存已用数值的文件,放在和脚本同目录就行
USED_NUMBERS_FILE = "used_numbers.txt"

def get_used_numbers():
    """读取已经用过的所有数值"""
    try:
        with open(USED_NUMBERS_FILE, "r") as f:
            # 把文件里的字符串转成浮点数集合,方便快速查重
            return set(float(line.strip()) for line in f if line.strip())
    except FileNotFoundError:
        # 第一次运行文件不存在,返回空集合
        return set()

def save_new_number(number):
    """把刚生成的新数值写入文件"""
    with open(USED_NUMBERS_FILE, "a") as f:
        f.write(f"{number}\n")

def generate_unique_number(used_nums):
    """生成唯一的、大于1的小数"""
    while True:
        # 生成1.01到100.0之间的随机小数,保留2位小数(要1位的话把2改成1)
        new_num = round(random.uniform(1.01, 100.0), 2)
        # 检查是不是没被用过
        if new_num not in used_nums:
            return new_num

# 主程序逻辑
if __name__ == "__main__":
    # 先加载已经用过的数值
    used_numbers = get_used_numbers()
    # 生成符合要求的唯一数
    target_number = generate_unique_number(used_numbers)
    # 把新数存起来
    save_new_number(target_number)
    
    # 启动浏览器,打开目标页面
    driver = webdriver.Chrome()  # 用Firefox的话换成webdriver.Firefox()
    driver.get("你的目标页面URL")
    
    # 定位输入框——这里用ID举例子,你要换成实际的定位方式,比如xpath、css选择器
    input_field = driver.find_element(By.ID, "your-input-id")
    # 如果需要加$后缀,就改成f"{target_number}$"
    input_field.send_keys(str(target_number))
    
    # 剩下的操作比如提交之类的自己加就行
    # driver.quit()

一些要注意的点

  • 定位输入框:代码里用的是By.ID,你得根据实际页面元素的属性改,比如用By.XPATH或者By.NAME,确保能准确找到输入框。
  • 调整小数范围和精度:random.uniform(1.01, 100.0)里的100.0可以改成你需要的上限,round的第二个参数控制小数位数,比如设为1就是1.1、1.8这种格式。
  • 重置记录:要是想清空所有已用数值的记录,直接删掉used_numbers.txt文件就行。
  • 特殊字符支持:你说输入1.8$能被系统接受,那只需要把send_keys里的内容改成f"{target_number}$"就可以了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:28:22