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

使用Selenium页面对象模型时,调用super().__init__出现参数错误求助

问题解决

错误原因分析

  1. 父类初始化调用错误:LoginPage的__init__方法中,调用super().__init__(self, driver)时多传入了self参数。Python里用super()调用父类构造方法时,不需要手动传self,super()会自动绑定当前实例对象。
  2. BasePage中open方法调用错误:BasePage的__init__里直接写open()会调用全局的open函数,而非类的open方法,应该改为self.open()。

修正后的代码

BasePage类

class BasePage:
    page_url = "placeholder"

    def __init__(self, driver):
        self.driver = driver
        self.open()  # 调用当前实例的open方法

    def open(self):
        self.driver.get(self.page_url)

LoginPage类

class LoginPage(BasePage):
    page_url = os.getenv("LOGIN_URL")

    def __init__(self, driver):
        super().__init__(driver)  # 仅传递driver参数即可
        self.login_button = self.driver.find_element(*LoginPageLocators.LOGIN_BUTTON)

额外优化建议

在初始化方法里直接定位元素容易遇到页面未加载完成的问题,推荐用Selenium的显式等待确保元素可被定位,示例如下:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

class LoginPage(BasePage):
    page_url = os.getenv("LOGIN_URL")

    def __init__(self, driver):
        super().__init__(driver)
        self.login_button = WebDriverWait(self.driver, 10).until(
            EC.presence_of_element_located(LoginPageLocators.LOGIN_BUTTON)
        )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:23:12