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

Selenium使用By.CLASS_NAME无法定位元素,抛出NoSuchElementException

解决Selenium无法定位「Next」按钮的问题

你的代码核心问题是使用By.CLASS_NAME传入了多个类名——Selenium的CLASS_NAME定位器只支持单个类名,你把nav next rndBtn ui_button primary taLnk这些类名连在一起传,它会把整个字符串当作一个完整的类名去查找,自然找不到元素。

下面是几种正确的定位方式:

方式1:用CSS_SELECTOR(推荐)

多个类名用英文点.连接,代表同时匹配这些类:

from selenium.webdriver.common.by import By

# 保持前面的初始化代码不变
python_button = driver.find_element(By.CSS_SELECTOR, "a.nav.next.rndBtn.ui_button.primary.taLnk")
python_button.click()

如果其中几个类名组合已经能唯一定位元素,可以简化,比如只用.ui_button.primary.next,减少冗余。

方式2:用XPATH定位

可以通过类名或按钮文本定位(假设按钮显示文本为「Next」):

python_button = driver.find_element(By.XPATH, "//a[contains(@class, 'next') and text()='Next']")
python_button.click()

额外注意事项

  • 如果元素在iframe里,需要先切换到对应iframe再定位
  • 如果元素在页面底部,可能需要先滚动到元素可见区域再点击:
    from selenium.webdriver.common.action_chains import ActionChains
    
    button = driver.find_element(By.CSS_SELECTOR, "a.nav.next.rndBtn.ui_button.primary.taLnk")
    ActionChains(driver).scroll_to_element(button).perform()
    button.click()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:34:58