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

Python Selenium独立浏览器驱动复用报错:MyDriver无get属性

解决Selenium自定义Driver类的AttributeError问题

嘿,这个问题我之前帮朋友排查过,其实根源很好找——你写的MyDriver类本身并没有get方法,get是属于类内部那个self.driver(也就是Firefox驱动实例)的方法。当你在另一个文件里调用driver.get()时,Python会在MyDriver对象上找这个方法,自然就报AttributeError了。

下面给你几个可行的解决方案,按需选择:

方案1:手动封装需要的方法(推荐,灵活可控)

在MyDriver类里添加get方法,把调用转发给内部的self.driver,还可以顺便封装其他常用方法(比如quit、find_element),方便后续扩展:

from selenium import webdriver

class MyDriver():
    def __init__(self):
        self.driver = webdriver.Firefox()
        # 这里还可以加自定义初始化逻辑,比如设置窗口大小
        self.driver.set_window_size(1920, 1080)
    
    # 封装get方法
    def get(self, url):
        self.driver.get(url)
    
    # 封装quit方法
    def quit(self):
        self.driver.quit()
    
    # 按需封装其他方法,比如查找元素
    def find_element(self, by, value):
        return self.driver.find_element(by, value)

这样修改后,你原来的调用代码完全不用改,直接运行就能正常打开谷歌页面了。

方案2:继承Selenium驱动类(简洁高效)

如果你的MyDriver不需要太多自定义逻辑,只是想统一管理驱动实例,直接让它继承webdriver.Firefox就行,这样会自动继承所有驱动的方法:

from selenium import webdriver

class MyDriver(webdriver.Firefox):
    def __init__(self):
        super().__init__()
        # 同样可以加自定义初始化逻辑
        self.set_window_size(1920, 1080)

调用代码依然保持不变:

from driver import MyDriver
driver = MyDriver()
driver.get('http://google.com')

这种方式代码量最少,适合简单封装场景。

方案3:直接访问内部驱动实例(不推荐)

虽然可以直接通过driver.driver.get()来调用,但这种方式破坏了类的封装性——如果以后你修改了MyDriver内部驱动的变量名(比如把self.driver改成self.browser),所有调用的地方都要跟着改,维护成本很高,所以不建议这么做:

from driver import MyDriver
driver = MyDriver()
driver.driver.get('http://google.com')

总的来说,方案1和方案2都是比较规范的做法,根据你的实际需求选就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:07:09