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

