Python Selenium网页爬取代码运行报错:NameError: name 'By' is not defined
问题解决:NameError: name 'By' is not defined
问题原因
代码里用By.ID定位元素,但没从Selenium库导入By类,Python找不到这个名称,所以抛出NameError。
修正后的代码
from selenium import webdriver from selenium.webdriver.common.by import By # 新增导入By类 import os os.environ['PATH'] += "C:\\Users\\czoca\\PycharmProjects\\pythonProject4\\chromedriver.exe" driver = webdriver.Chrome() driver.get("https://www.teintes.fr/p/recapitulatif.html") driver.implicitly_wait(10) myelement1 = driver.find_element(By.ID, "Autoriser") myelement = driver.find_element(By.ID, "Carens III") myelement1.click() myelement.click()
也可以直接在初始导入时包含By:
from selenium import webdriver, By # 直接导入By import os os.environ['PATH'] += "C:\\Users\\czoca\\PycharmProjects\\pythonProject4\\chromedriver.exe" driver = webdriver.Chrome() driver.get("https://www.teintes.fr/p/recapitulatif.html") driver.implicitly_wait(10) myelement1 = driver.find_element(By.ID, "Autoriser") myelement = driver.find_element(By.ID, "Carens III") myelement1.click() myelement.click()
补充说明
By是Selenium里指定元素定位策略的类,像By.CLASS_NAME、By.XPATH、By.NAME这些常用定位方式,使用前都得确保导入了By类。
内容的提问来源于stack exchange,提问作者Nolgath
相关产品推荐
相关产品推荐

