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
相关产品推荐
相关产品推荐

