Selenium循环点击指定元素问题:始终定位首个元素的解决方法
Selenium循环定位元素异常:重复点击首个元素的解决方案
问题场景
需要通过循环逐个点击满足以下条件的页面元素:
- 元素的
data-tooltip属性值匹配列表a中的每一项 - 元素的
href属性包含/transaction/
原实现代码:
for i in a: tx_click = driver.find_element(By.XPATH, '//a[contains(@data-tooltip, i) and contains(@href, "/transaction/")]').click() driver.back()
目标匹配的列表a:
['5e8d1', '60e6f', '3ac8d', '598f5', 'fab93']
运行异常:代码始终重复点击第一个元素(data-tooltip为5e8d1的元素),只有在XPath中直接写死精确字符串时才能正常匹配对应元素。
问题原因
原XPath表达式中,变量i被直接写入字符串,未被解析为循环中的当前值,XPath会把i当成字面量匹配,导致每次都定位到第一个符合contains(@data-tooltip, "i")的元素。
解决方案
使用Python的f-string将变量i动态嵌入XPath表达式,让每次循环生成对应当前列表项的定位规则:
修改后的代码:
for i in a: tx_click = driver.find_element(By.XPATH, f'//a[contains(@data-tooltip, "{i}") and contains(@href, "/transaction/")]').click() driver.back()
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

