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

如何生成字符串全排列(含非全字符场景)及Python链接测试实现

生成字符排列并结合Selenium测试链接

需求说明

需要实现两种字符排列生成逻辑,结合Selenium自动访问拼接后的链接:

  1. 给定字符集(如A-Z0-9),按单字符→双字符→多字符的顺序生成指定数量的组合,比如numatts=27时,前26个是A-Z,第27个是AA
  2. 给定目标字符串(如"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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:20:33