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

Selenium库查找元素报错:NameError: name 'By' is not defined 问题咨询

解决Selenium中NameError: name 'By' is not defined的问题

嘿,这个问题我太熟了!你碰到的NameError本质原因很简单:你在代码里使用了By类来指定元素定位策略,但没有提前从Selenium库中导入它。

Selenium里的By是一个专门用来定义元素定位方式(比如按NAME、ID、XPATH等)的工具类,它并不是selenium主模块自带的,必须显式导入才能使用。

具体解决步骤

1. 补充By的导入语句

在代码开头加上这一行,把By类导入进来:

from selenium.webdriver.common.by import By

2. 修正后的完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.google.com/?gws_rd=ssl")
search_box = driver.find_element(By.NAME, "q")
search_button = driver.find_element(By.NAME, "btnK")

额外小技巧

如果你暂时不想导入By类,也可以直接用对应的字符串来代替定位策略,比如:

search_box = driver.find_element("name", "q")
search_button = driver.find_element("name", "btnK")

不过更推荐使用By类的方式,因为它有代码自动补全提示,能减少拼写错误,代码可读性也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:47:41