如何生成字符串全排列(含非全字符场景)及Python链接测试实现
生成字符排列并结合Selenium测试链接
需求说明
需要实现两种字符排列生成逻辑,结合Selenium自动访问拼接后的链接:
- 给定字符集(如A-Z0-9),按单字符→双字符→多字符的顺序生成指定数量的组合,比如numatts=27时,前26个是A-Z,第27个是AA
- 给定目标字符串(如"test"),生成所有包含部分或全部字符的排列(比如t、et、est、tset等),覆盖所有子序列的全排列场景
一、基于字符集生成递增长度的组合
用itertools.product生成不同长度的笛卡尔积,按长度递增顺序收集组合,直到达到指定尝试次数:
from selenium import webdriver from itertools import product chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" base_url = "google.com" numatts = int(input("How Many Times To Attempt? >> ")) # 初始化Chrome浏览器 driver = webdriver.Chrome() permutations = [] current_length = 1 # 按长度递增生成组合,直到凑够指定数量 while len(permutations) < numatts: for combo in product(chars, repeat=current_length): permutations.append(''.join(combo)) if len(permutations) == numatts: break current_length += 1 # 遍历访问每个链接 for perm in permutations: full_url = f"{base_url}/{perm}" print(f"正在访问: {full_url}") driver.get(full_url) # Selenium用get方法打开链接,不是open # 这里添加你的测试逻辑,比如检查页面状态、元素等 # Code Stuff.... # 测试完成后关闭浏览器 driver.quit()
二、基于目标字符串生成所有子序列的排列
通过itertools.combinations生成所有非空子序列的字符组合,再用permutations生成每个组合的全排列,最后用集合去重:
from selenium import webdriver from itertools import combinations, permutations target_str = "test" base_url = "google.com" # 初始化Chrome浏览器 driver = webdriver.Chrome() unique_perms = set() # 遍历所有子序列长度(1到字符串总长度) for length in range(1, len(target_str)+1): # 生成当前长度的所有字符组合 for combo in combinations(target_str, length): # 对每个组合生成全排列 for p in permutations(combo): unique_perms.add(''.join(p)) # 转换为列表(可按需排序) unique_perms = list(unique_perms) # 遍历访问每个链接 for perm in unique_perms: full_url = f"{base_url}/{perm}" print(f"正在访问: {full_url}") driver.get(full_url) # 添加你的测试逻辑 # Code Stuff.... driver.quit()
内容的提问来源于stack exchange,提问作者TullyYT
相关产品推荐
相关产品推荐

