Python搭建Selenium POM框架报错enterEmail()缺少必填位置参数'email'
报错原因分析
- 实例方法调用逻辑错误:
enterLoginEmail是LoginPage的实例方法,第一个默认参数self需要绑定类的实例对象。直接通过类名LoginPage.enterLoginEmail(driver, email)调用时,Python会将传入的driver赋值给self参数,email赋值给方法定义的第二个参数driver,导致方法要求的第三个参数email无对应传入值,触发参数缺失报错。 - 方法参数设计冗余:
LoginPage的__init__初始化方法已经将driver存入实例属性self.driver,enterLoginEmail不需要额外接收driver参数。 - 类属性引用不规范:方法中直接使用
email_address定位器时未加实例/类前缀,后续运行还会触发变量未定义的报错。
修复方案
1. 修正LoginPage类定义
移除enterLoginEmail方法中冗余的driver参数,规范定位器引用逻辑:
class LoginPage: def __init__(self, driver): self.driver = driver # 定位器 email_address = 'email' pw = 'password' def enterLoginEmail(self, email): self.login_email = self.driver.find_element_by_id(self.email_address) self.login_email.send_keys(email)
2. 修正调用方式
先实例化LoginPage页面对象,再通过实例调用对应方法:
# 初始化页面对象,传入driver login_page = LoginPage(driver) # 调用方法仅需传入email参数 login_page.enterLoginEmail(email)
内容的提问来源于stack exchange,提问作者python_crockpot
相关产品推荐
相关产品推荐

