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

基于Selenium Python的CSV表单提交脚本内存优化与Chrome适配咨询

解决方案

1. 复用Chrome实例优化内存占用

你当前代码每次循环都新建Chrome实例的核心原因是webdriver.Chrome()初始化逻辑放在了for循环内部,只需要将初始化逻辑移到循环外,每次提交完成后重新加载表单页面即可,优化后的代码示例如下:

#-------------------------------------------------------------------------------
# Imports
import csv
import time
from selenium import webdriver
# 适配版本自动匹配的依赖(可选)
# from selenium.webdriver.chrome.service import Service
# from webdriver_manager.chrome import ChromeDriverManager

#-------------------------------------------------------------------------------
# 全局配置
FORM_URL = "替换为你的表单页面实际地址"

# Chrome实例仅初始化1次(放在循环外)
# 手动指定驱动的原有写法
driver = webdriver.Chrome(executable_path='./chromedriver')
# 自动匹配版本的写法(配合webdriver-manager使用)
# driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

#-------------------------------------------------------------------------------
# 数据读取与自动化提交
with open('data.csv', 'r', encoding='utf-8') as csv_file:
    csv_reader = csv.reader(csv_file)
    for line in csv_reader:
        # 每次加载表单页面,重置表单状态
        driver.get(FORM_URL)
        # 等待页面加载完成,可替换为显式等待提升效率
        time.sleep(3)
        
        title_field = driver.find_element_by_xpath('//*[@id="TITLE"]')
        title_field.send_keys(line[0])

        fname_field = driver.find_element_by_xpath('//*[@id="FIRSTNAME"]')
        fname_field.send_keys(line[1])

        lname_field = driver.find_element_by_xpath('//*[@id="LASTNAME"]')
        lname_field.send_keys(line[2])
        
        phone_field = driver.find_element_by_xpath('/html/body/div/div/div[5]/form/div[6]/div/div/div/div/div[1]/div[2]/input[2]')
        phone_field.send_keys(line[3])

        mail_field = driver.find_element_by_xpath('//*[@id="EMAIL"]')
        mail_field.send_keys(line[4])

        submit = driver.find_element_by_xpath('//*[@id="s-form"]/div[9]/div/button')
        submit.click()
        # 等待提交完成,避免未提交就进入下一轮处理
        time.sleep(2)

# 全部数据处理完成后关闭浏览器
driver.quit()
#-------------------------------------------------------------------------------

如果表单提交后页面没有跳转到其他地址,也可以用driver.refresh()刷新页面代替driver.get(FORM_URL)重置表单。

2. ChromeDriver与Chrome版本兼容解决方案

推荐使用webdriver-manager工具解决版本适配问题,无需手动下载对应版本的ChromeDriver,工具会自动检测本地Chrome的版本,下载完全匹配的驱动文件。

  • 安装命令:pip install webdriver-manager
  • 代码修改参考上面注释中的驱动初始化写法,不需要再手动指定executable_path参数。
  • 打包exe注意事项:使用PyInstaller打包时添加参数--collect-datas webdriver_manager即可避免依赖缺失,打包后的exe仅需要运行环境预先安装Chrome浏览器即可,无需额外携带ChromeDriver文件。

如果不想引入额外依赖,可手动匹配版本:ChromeDriver的主版本号需要和本地安装的Chrome主版本号完全一致,在Chrome设置的「关于Chrome」页面查看当前版本后,下载对应版本的ChromeDriver即可。

额外优化提示

Selenium 4.0+版本已弃用find_element_by_xpath这类方法,可替换为driver.find_element(By.XPATH, '路径')的写法,兼容性更强,需要额外导入依赖:from selenium.webdriver.common.by import By。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:02