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

Selenium中find_element使用报错求助:NameError: name 'By' is not defined

问题解决:Selenium find_element 报错及按钮定位修正

1. 解决 NameError: name 'By' is not defined

你需要显式导入By类,它属于selenium.webdriver.common.by模块,在代码开头添加导入语句:

from selenium.webdriver.common.by import By

2. 修正按钮定位逻辑

By.class_name仅支持传入单个类名,你传入的是多个空格分隔的类名,这会直接导致定位失败。针对多class组合的元素,推荐使用By.CSS_SELECTOR,将多个类名用.连接(替换原有的空格):

button = driver.find_element(By.CSS_SELECTOR, ".rounded-md.mr-1.text-white.font-bold.text-base.cursor-pointer.py-1.px-3.mx-1")

完整修正后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By  # 新增By类导入
import time

driver = webdriver.Chrome(r"./driver/chromedriver")
driver.get("https://cin.guru/g/438694")
driver.maximize_window()
time.sleep(5)
button = driver.find_element(By.CSS_SELECTOR, ".rounded-md.mr-1.text-white.font-bold.text-base.cursor-pointer.py-1.px-3.mx-1")
button.click()
driver.quit()  # 执行完操作后关闭浏览器

额外优化建议

  • 优先使用显式等待替代time.sleep(),避免因页面加载速度不稳定导致的元素未找到问题,示例代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到按钮可点击
button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, ".rounded-md.mr-1.text-white.font-bold.text-base.cursor-pointer.py-1.px-3.mx-1"))
)
button.click()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:00:59