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

使用Selenium点击Next按钮触发NoSuchElementException问题求解

问题:Selenium点击Next按钮时出现NoSuchElementException错误

我尝试用Selenium点击页面上的Next按钮,写了对应的代码但运行后抛出了找不到元素的错误,相关细节如下:

页面元素代码

<input type="submit" name="submitNext" value="Next">

我编写的Python代码

driver.find_element_by_name("submitNext").click()

运行后报错信息

Traceback (most recent call last): File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 194, in <module> visa() File "C:/Users/thomas/PycharmProjects/test/mainapp/main.py", line 174, in visa driver.find_element_by_name("submitNext").click() File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 487, in find_element_by_name return self.find_element(by=By.NAME, value=name) File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element 'value': value})['value'] File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute self.error_handler.check_response(response) File "C:\Users\thomas\PycharmProjects\BudgetMain\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"submitNext"} (Session info: chrome=66.0.3359.170) (Driver info: chromedriver=2.36.540470 (e522d04694c7ebea4ba8821272dbef4f9b818c91),platform=Windows NT 10.0.16299 x86_64)

请问怎么才能无错误地点击这个按钮?


可能的解决方法

根据你遇到的问题,我整理了几个常见的排查和解决方向,你可以逐一尝试:

  • 等待元素完全加载后再操作
    很多时候找不到元素是因为代码执行速度比页面加载快,元素还没渲染出来就被定位了。这种情况用Selenium的显式等待就很管用,它会等待元素满足可点击条件后再执行操作:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置最多等待10秒,直到元素可点击
wait = WebDriverWait(driver, 10)
next_button = wait.until(EC.element_to_be_clickable((By.NAME, "submitNext")))
next_button.click()
  • 检查元素是否在iframe内
    如果这个Next按钮嵌套在页面的iframe标签里,直接定位是找不到的,必须先切换到对应的iframe中:
# 假设目标iframe的id是"target-frame",先切换进去
driver.switch_to.frame("target-frame")
# 现在可以正常定位并点击按钮了
driver.find_element_by_name("submitNext").click()
# 操作完成后记得切回主页面,避免后续定位出错
driver.switch_to.default_content()

如果不知道iframe的id/name,也可以通过索引或者元素定位来切换,比如driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))。

  • 尝试其他元素定位方式
    如果name定位不太稳定,也可以换用xpath定位,比如通过按钮的value属性或者组合多个属性来定位:
# 通过value属性定位
driver.find_element_by_xpath("//input[@value='Next']").click()
# 或者同时指定name和type属性,定位更精准
driver.find_element_by_xpath("//input[@name='submitNext' and @type='submit']").click()
  • 检查浏览器与驱动的版本兼容性
    你的Chrome版本是66.0,当前用的chromedriver是2.36,虽然2.36支持Chrome 65-67,但有时候版本匹配度不够也会导致元素定位异常。建议你下载适配Chrome 66的chromedriver(比如2.38版本)替换当前驱动,再重新运行代码试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:27:20