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

如何基于Selenium ChromeDriver创建自定义类并解决多文件报错

问题解决:Selenium多文件类结构封装错误排查

错误原因

你错误地将webdriver.Chrome的实例作为父类继承,而非继承webdriver.Chrome类本身。Selenium的浏览器驱动类是用于实例化的,继承实例会导致内部参数解析混乱,触发AttributeError。

修正后的多文件结构

1. 封装类文件(folder/scrape.py)

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

class Scrape(webdriver.Chrome):
    def __init__(self):
        # 初始化ChromeDriver服务
        chrome_service = Service("C:\\SeleniumDrivers\\chromedriver.exe")
        # 调用父类构造方法传入服务参数
        super().__init__(service=chrome_service)
    
    # 可添加自定义方法,比如封装元素查找逻辑
    def find_by_name(self, name):
        return self.find_element(By.NAME, name)

2. 运行文件(run.py)

from folder.scrape import Scrape

# 实例化自定义爬虫类
scraper = Scrape()
# 打开目标网页
scraper.get("http://www.google.co.uk")
# 最大化窗口(注意方法名是maximize_window,不是maximisewindow)
scraper.maximize_window()
# 查找搜索框并输入内容
search_box = scraper.find_by_name("q")
search_box.send_keys("Selenium 4 用法" + Keys.ENTER)

# 后续操作...

# 操作完成后关闭浏览器
# scraper.quit()

关键注意事项

  • 继承webdriver.Chrome类而非其实例,在子类__init__中完成父类的初始化并传入必要参数(如Service)。
  • 严格遵循Selenium的方法命名规范:比如maximize_window(下划线分隔)、find_element(而非findelement),且查找元素必须配合By类指定定位策略(如By.NAME、By.ID)。
  • 可在Scrape类中扩展自定义方法,封装重复操作,提升代码复用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:10:39