Selenium无法点击网站按钮(含隐藏按钮)技术求助
解决隐藏按钮点击失败的问题
我来帮你搞定这个困扰!先理清楚页面的逻辑:显示的get图片按钮点击后,本质是触发隐藏的submitMe按钮的点击事件,最终执行submitData()函数。你之前的尝试失败大概率是因为缺少等待逻辑,或者对隐藏元素的点击方式不对,咱们一步步来解决:
方法一:直接调用核心JS函数(最可靠)
既然最终目的是执行submitData(),那完全可以跳过按钮环节,直接调用这个函数,这是最不容易出问题的方式:
# 先导入等待相关的工具(建议加上,避免页面未加载完成就操作) from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待页面关键元素加载完成(比如那个显示的图片按钮) WebDriverWait(sub_driver, 10).until( EC.presence_of_element_located((By.ID, "get")) ) # 直接执行目标JS函数 sub_driver.execute_script("submitData();")
方法二:正确触发隐藏按钮的点击
如果你一定要通过点击submitMe按钮来触发逻辑,注意Selenium默认无法直接点击display:none的元素,必须用JS强制触发:
# 等待隐藏按钮被页面加载出来 submit_btn = WebDriverWait(sub_driver, 10).until( EC.presence_of_element_located((By.ID, "submitMe")) ) # 用JS执行点击操作 sub_driver.execute_script("arguments[0].click();", submit_btn)
方法三:点击显示的图片按钮(贴近用户真实操作)
你之前尝试过点击get按钮,但可能因为页面没加载完导致失败,加上等待逻辑再试试:
# 等待图片按钮可点击 get_btn = WebDriverWait(sub_driver, 10).until( EC.element_to_be_clickable((By.ID, "get")) ) get_btn.click()
你之前代码的问题分析
- 缺少等待逻辑:页面还没加载完成就去查找/点击元素,很容易出现"找不到元素"或者点击无效的情况
- 代码中
my_var=...click的写法错误:.click是方法引用,不是元素对象,传给execute_script会导致出错,应该直接获取元素本身 - 直接使用
find_element_by_xxx没有等待机制,稳定性极差
内容的提问来源于stack exchange,提问作者Baba Patil
相关产品推荐
相关产品推荐

