Python Selenium登录混合框架调用Logintest报setUserName属性错误如何解决
报错根因
你遇到的AttributeError: 'Logintest' object has no attribute 'setUserName'错误,核心原因是你调用的setUserName方法,没有在你实例化的Logintest类内部定义。
排查步骤
- 检查
Logintest类的方法名拼写:Python对大小写敏感,确认类里的方法名和你调用的setUserName完全一致,避免出现类里写的是set_username(下划线命名)、setUsername(首字母小写驼峰)这类拼写不匹配的问题。 - 检查方法缩进:确认
setUserName方法是定义在Logintest类的内部,没有因为缩进错误变成全局函数。 - 检查导入路径:确认你测试代码里导入的
Logintest类,就是你写了用户名输入方法的页面对象类,没有导入错其他同名的空类。
修复示例
你可以参考如下页面对象层的正确写法调整你的Logintest类:
from selenium.webdriver.common.by import By class Logintest: def __init__(self, driver): self.driver = driver # 用户名输入框元素定位,可替换为你实际的定位规则 self.username_loc = (By.NAME, "user") # 方法名必须和调用时完全一致 def setUserName(self, username): self.driver.find_element(*self.username_loc).send_keys(username)
如果想要快速验证对象可用方法,可以在实例化Logintest后加入一行调试代码:
self.Lp=Logintest(self.driver) # 打印对象所有可用属性方法,确认是否存在setUserName print(dir(self.Lp))
内容的提问来源于stack exchange,提问作者ashish labh
相关产品推荐
相关产品推荐

