使用Python2.7.10+Selenium登录报错AttributeError,求解决方法
修复Selenium中AttributeError: 'module' object has no attribute 'document'的问题
嘿,我看到你在Python 2.7.10里用Selenium实现登录时碰到了这个错误,问题根源在于你把浏览器端的JavaScript DOM操作逻辑直接套在了selenium模块上——selenium模块本身并没有document这个属性,这是浏览器环境里才有的对象,咱们得用Selenium正确的元素定位方式来改:
错误原因拆解
你写的selenium.document.getElementById("Username")是浏览器控制台里的JS写法,但在Selenium的Python API里,元素定位是通过你初始化的driver对象来完成的,而不是直接调用selenium模块。
修正后的完整代码
from selenium import webdriver # 初始化Chrome浏览器驱动 driver = webdriver.Chrome("/Users/username/Downloads/chromedriver") driver.get("http://website.com") # 通过driver对象定位用户名和密码输入框 username = driver.find_element_by_id("Username") password = driver.find_element_by_id("Password") # 输入账号密码 username.send_keys("your_username") password.send_keys("your_password") # 通过driver定位登录按钮并点击 driver.find_element_by_name("Login").click()
关键修改点
- 去掉了不必要的
import selenium,因为我们只需要用selenium.webdriver里的对象 - 把所有
selenium.xxx的调用换成了driver.xxx——driver是你打开的浏览器实例,所有和页面交互的操作都要通过它来完成 - 用Selenium提供的
find_element_by_id替代了JS的getElementById,这是Python版Selenium定位元素的标准方式
另外提个小建议:如果你的Selenium版本支持,也可以用更清晰的By类来定位(适配Python 2.7的Selenium版本需要额外导入),比如:
from selenium.webdriver.common.by import By username = driver.find_element(By.ID, "Username")
这样代码可读性会更高,不过上面的基础写法已经能解决你的问题啦~
内容的提问来源于stack exchange,提问作者Jeremyapple
相关产品推荐
相关产品推荐

