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
相关产品推荐
相关产品推荐

