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

Selenium报错:'WebElement'对象无'username'属性,求GitHub自动登录修复

GitHub自动登录Selenium代码错误排查与修复

错误原因

报错AttributeError: 'WebElement' object has no attribute 'username'的核心问题是:你在找到输入框元素后,错误地给WebElement对象添加了.username和.password属性,而WebElement本身并没有这些属性。找到输入框元素后,直接调用send_keys()方法即可填入内容。

修正后的代码

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from githubuser import username, password

class Github:
    def __init__(self,username,password):
        self.browser = webdriver.Chrome()
        self.username = username    
        self.password = password
    def signin(self):
        self.browser.get("https://github.com/login/")
        time.sleep(2)
        # 移除多余的.username和.password属性,直接调用send_keys
        self.browser.find_element(By.XPATH,'//*[@id="login_field"]').send_keys(self.username) 
        self.browser.find_element(By.XPATH,'//*[@id="password"]').send_keys(self.password)

        time.sleep(2)
        self.browser.find_element(By.XPATH,'//*[@id="login"]/div[4]/form/div/input[11]').click()

github = Github(username = username, password = password)
github.signin()

额外优化建议(可选)

  • 尽量避免使用time.sleep()固定等待,改用Selenium的显式等待(WebDriverWait),可以更高效地等待元素加载完成,示例:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 替换time.sleep(2)为:
    WebDriverWait(self.browser, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="login_field"]')))
    
  • 定位登录按钮的XPath可以更稳定,比如用//input[@name="commit"]代替索引定位,避免页面结构变化导致定位失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:10