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

Python unittest+Selenium报错:MainPage无click_go_button属性

排查AttributeError: 'MainPage' object has no attribute 'click_go_button'

以下是几种可能的原因及对应的排查/解决方法:

1. 导入的MainPage类并非你定义的版本

测试代码中使用page.MainPage导入类,可能存在以下问题:

  • 修改了MainPage类的代码但未保存,或运行测试时加载的是旧版本的page模块(Python会缓存已导入的模块)。
  • 项目路径中存在另一个同名的page.py文件,导致导入了错误的类。

解决步骤:

  • 确认page模块所在的文件已保存最新代码,删除项目根目录下的__pycache__文件夹后重新运行测试。
  • 在测试代码的test_test_also方法开头添加一行代码:
    print(dir(mainPage))
    
    运行测试后查看输出,确认列表中是否包含click_go_button。如果没有,说明导入的类确实没有这个方法,需要检查导入路径和文件内容。

2. BasePage类干扰了属性访问

MainPage继承自BasePage,如果BasePage中重写了__getattr__、__setattr__等魔法方法,可能会导致实例无法正常访问自身的方法。

解决步骤:

  • 检查BasePage的代码,确认没有实现会干扰属性查找的魔法方法。如果必须使用这些方法,需要确保它们正确处理了方法的访问(比如在__getattr__中找不到属性时抛出AttributeError,而非返回None或其他值)。

3. MainPage类的定义存在隐性问题

虽然代码看起来正确,但可能存在以下隐性问题:

  • MainPage类的定义被其他代码覆盖(比如在同一个模块中,后面又定义了一个同名的MainPage类)。
  • 代码缩进错误:检查click_go_button方法的缩进是否和if_title_matches方法同级,确保它是MainPage类的成员方法,而非嵌套在其他方法或类中。

解决步骤:

  • 打开page模块文件,确认MainPage类的定义中,click_go_button方法的缩进正确,且没有被其他同名类覆盖。

额外提示:测试代码中的另一个潜在问题

测试代码中assert mainPage.if_title_matches这一行存在问题:if_title_matches是一个方法,需要调用它才能得到布尔值,应该改为:

assert mainPage.if_title_matches()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:40:20