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

如何用Selenium结合XPATH遍历字符串列表,循环点击对应网页?

解决Selenium循环点击不同网页的XPATH问题

你需要将Python变量j正确插入到XPATH表达式中,之前的尝试里j会被XPATH当作字面文本处理,而非循环中的当前列表元素。以下是可行的修改方案:

方法1:使用f-string格式化(推荐)

直接用Python的f-string把变量嵌入XPATH字符串,每次循环自动替换为列表中的当前值:

y = ['Toowoomba', 'Ascot']
for j in y:
    button2 = driver.find_element(by=By.XPATH, value=f"(//span[contains(text(),'{j}')])[2]")
    button2.click()

方法2:使用str.format()格式化

如果你的Python版本不支持f-string(Python3.6以下),可以用字符串的format方法:

y = ['Toowoomba', 'Ascot']
for j in y:
    button2 = driver.find_element(by=By.XPATH, value="(//span[contains(text(),'{}')])[2]".format(j))
    button2.click()

可选优化:添加显式等待

如果点击后页面会刷新或跳转,可能需要等待元素重新加载完成,避免NoSuchElementException:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

y = ['Toowoomba', 'Ascot']
wait = WebDriverWait(driver, 10)  # 最多等待10秒
for j in y:
    button2 = wait.until(EC.element_to_be_clickable((By.XPATH, f"(//span[contains(text(),'{j}')])[2]")))
    button2.click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:27:05