Python Selenium点击所有<li>元素遇拦截问题求助
解决方案
直接点击<li>元素不行,错误提示已经明确:实际能接收点击的是<li>内部的<img>元素——它挡住了父级<li>,导致点击被拦截。另外你之前的代码里,driver.find_elements()返回的是元素列表,不能直接调用click(),得逐个遍历处理。
按下面的逻辑修改代码:
- 先等待所有目标
<li>元素加载完成,避免因页面未就绪找不到元素 - 遍历每个
<li>,定位它内部的<img>元素 - 直接点击这个可交互的
<img>
示例代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待所有目标<li>加载完成(注意:你代码里用的类名是result-view,错误日志里是result-visualizar,以页面实际类名为准) li_elements = WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located((By.CLASS_NAME, "result-visualizar")) ) # 逐个点击每个<li>内部的<img> for li in li_elements: img_btn = li.find_element(By.TAG_NAME, "img") img_btn.click() # 如果点击后页面有跳转/弹窗/加载,可添加对应等待逻辑,比如: # WebDriverWait(driver, 5).until(EC.staleness_of(li))
补充提醒:
- 务必核对
<li>的类名,确保和页面实际元素一致 - 用显式等待
WebDriverWait比直接调用find_elements更稳定,能避免页面未加载完成就执行操作的问题 - 如果点击后有新窗口或弹窗,记得先切换窗口/处理弹窗,再继续遍历后续元素
内容的提问来源于stack exchange,提问作者randomxxguy
相关产品推荐
相关产品推荐

