Selenium报错求助:module 'driver' has no attribute 'find_element'
解决Selenium爬取Django登录页的AttributeError问题
错误根源
你代码里的核心问题是初始化WebDriverWait的时机和对象错误:
- 导入了无关的
driver模块,这不是Selenium的浏览器驱动实例 - 在创建Chrome浏览器实例
driver = webdriver.Chrome()之前,就用错误的driver模块初始化了wait对象,导致后续调用时找不到find_element方法
修正后的代码
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait # 先创建浏览器驱动实例 driver = webdriver.Chrome() # 再用正确的驱动实例初始化等待对象 wait = WebDriverWait(driver, 10) driver.get("http://localhost:8000") # 补充http协议,避免浏览器识别错误 driver.maximize_window() git_login = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, 'Sign in'))) # 如需执行点击操作可添加:git_login.click() driver.close()
额外注意事项
- 访问地址必须包含协议(如
http://),否则浏览器无法正确识别目标页面 - 如果
Sign in文本存在大小写、空格差异导致LINK_TEXT匹配失败,可改用By.PARTIAL_LINK_TEXT或XPath定位,例如:# 用XPath定位文本包含Sign in的链接 git_login = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), 'Sign in')]"))) - 确保Django开发服务器正在
localhost:8000正常运行,且页面能通过浏览器手动访问
内容的提问来源于stack exchange,提问作者Abhishek Kakadiya
相关产品推荐
相关产品推荐

