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

