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

如何在Selenium的try-except块中遍历多关键词查找元素并点击

Selenium多关键词依次匹配元素改造方案

核心改造逻辑

原有代码仅支持单个关键词匹配,且单个关键词查找失败就直接刷新页面,不符合多关键词依次匹配的需求。改造时遵循以下规则:

  • 将待匹配关键词按优先级整理为有序列表,靠前的关键词优先匹配
  • 每轮页面加载完成后,按顺序遍历所有关键词查找对应元素
  • 任意关键词匹配到目标元素后,立即执行点击操作,终止全部循环
  • 只有当前页面遍历完所有关键词都未找到匹配元素时,才执行页面刷新、等待操作,进入下一轮重试

改造后完整代码

import time
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException

# 按匹配优先级顺序填入待匹配关键词
MATCH_KEYWORDS = ["dawson", "second_keyword", "third_keyword"]

while True:
    is_element_found = False
    # 依次遍历所有关键词匹配当前页面
    for keyword in MATCH_KEYWORDS:
        try:
            target_element = driver.find_element(
                By.XPATH, 
                f"//*[contains(@href, '{keyword}')]"
            )
            target_element.click()
            is_element_found = True
            break
        except NoSuchElementException:
            # 当前关键词无匹配元素,继续尝试下一个
            continue
    # 已找到元素则退出外层循环
    if is_element_found:
        break
    # 所有关键词均匹配失败,刷新页面等待后重试
    driver.refresh()
    time.sleep(3)

注意事项

  • 关键词列表的顺序直接决定匹配优先级,业务优先级更高的关键词请放在列表靠前位置
  • 如果关键词本身包含单引号,需要调整XPATH的引号嵌套规则做转义,避免XPATH语法报错
  • 固定等待time.sleep(3)可以替换为Selenium显式等待,根据页面实际加载速度调整等待时长,提升脚本运行效率和稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:54:17