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

如何在继承webdriver.Firefox的类中使用Selenium Options?

如何在继承webdriver.Firefox的类中使用Options?

我已经掌握了Python Selenium中Options的基础用法:

options = webdriver.FirefoxOptions()
options.headless=True

driver = webdriver.Firefox(options=options)

driver.get('https://lxml.de')
print(driver.title)

但当类继承自webdriver.Firefox时,不知道如何在OOP模式下正确使用Options,现有代码结构如下:

class Get_selenium_dynamic_data(webdriver.Firefox):
    def __init__(self, teardown=True):
        self.teardown = teardown
        super(Get_selenium_dynamic_data, self).__init__()
        self.implicitly_wait(10)
        self.maximize_window() 

尝试了两种方式都无效:
方式一:

options = webdriver.FirefoxOptions()
options.headless=True
class Get_selenium_dynamic_data(webdriver.Firefox(options=options)):

方式二:

class Get_selenium_dynamic_data(webdriver.Firefox):
    def __init__(self, teardown=True):
        options = webdriver.FirefoxOptions()
        options.headless=True
        self(option=options)
        #self = self(option=options)

正确实现方法

核心是在子类的__init__方法中创建Options实例,然后通过super()调用父类构造函数时传入该参数,代码如下:

from selenium import webdriver

class Get_selenium_dynamic_data(webdriver.Firefox):
    def __init__(self, teardown=True, headless=False):
        # 初始化配置项
        options = webdriver.FirefoxOptions()
        options.headless = headless
        
        # 调用父类构造方法并传入options
        super().__init__(options=options)
        
        self.teardown = teardown
        self.implicitly_wait(10)
        # 无头模式下最大化窗口不生效,按需调整
        if not headless:
            self.maximize_window() 

# 使用示例
if __name__ == "__main__":
    driver = Get_selenium_dynamic_data(headless=True)
    driver.get('https://lxml.de')
    print(driver.title)
    driver.quit()

错误方式分析

  • 方式一:试图继承webdriver.Firefox的实例,这是语法错误——Python类只能继承类本身,不能继承类的实例对象。
  • 方式二:self(option=options)是错误的调用方式,self是当前类的实例,不能像函数一样调用;self = self(option=options)也只是重新赋值局部变量,不会改变实例的初始化逻辑。

额外优化

把headless作为参数传入__init__,可以灵活控制是否启用无头模式;同时注意无头模式下maximize_window()通常无效,可根据需求调整该逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:51:13