Selenium 3.141.0.zip 安装与驱动匹配:老项目自动化脚本的稳定落地指南
简介面对网络不稳定或官网下载缓慢的情况离线安装包成为Python自动化测试环境搭建的可靠选择。该资源是selenium 3.141.0版本完整zip包适用于需要使用WebDriver进行浏览器自动化、爬虫或测试脚本开发的工程师与学习者。包内共104个文件以86个py源码文件为主体涵盖selenium核心模块同时包含配置文件、许可证、版本变更说明以及js脚本等辅助内容可满足本地离线安装与基础查阅需求。压缩包整体约905KB体积小巧便于传输和存放。无论是个人学习还是企业项目搭建都可借此避免在线安装时的超时与连接重置问题。目前已有2128人学习或下载验证了其在实际部署中的实用价值。获取后解压至任意目录通过命令行执行安装命令即可完成部署免去反复中断或长时间等待的烦恼让环境配置更加高效顺畅。1. 为什么 2024 年还有人往服务器上装 selenium-3.141.0.zip拿到这个文件名的第一反应大概率是「古董」但真正常年维护自动化脚本的人会告诉你这个版本是 Selenium 3 系列的最后一个正式版也是老一代find_element_by_*API 最后的稳定载体。很多存量项目的回归测试、定时采集任务、后台截图服务依赖关系里至今写着selenium3.141.0不是不想升而是升级到 4.x 之后老脚本大面积报错业务又不敢停下来重构。这个 zip 包通常就是在这种背景下被下载、拷贝、离线传到内网机器上的。这篇文章要解决的问题很务实这个包到底是什么、怎么装、怎么配对浏览器驱动、老项目里哪些写法必须保留、哪些坑会让你装完就翻车。2. 这个 zip 包是什么从版本线到安装落地的完整路径2.1 3.141.0 在 Selenium 版本演进中的位置Selenium 3 的迭代停在 3.141.0 这个版本号上之后项目重心转向 4.x通信协议全面切到 W3C WebDriver 标准。对使用者来说最直观的变化是 API3.141.0 还能用find_element_by_id()、find_element_by_class_name()这一整类方法到了 4.0 这些方法被移除必须改写成find_element(By.ID, ...)这种风格。换句话说谁手上有几千行按老教程写出来的脚本谁就会被锁在 3.141.0 附近。另一个容易被忽略的点是3.141.0 没有 Selenium Manager。4.6 之后的版本会自动下载浏览器驱动3.141.0 不具备这个能力所有 chromedriver、geckodriver 都得手动下载、手动放路径、手动匹配版本。这也是为什么很多人在这个版本上第一次接触「驱动匹配」这个概念。这个 zip 包多数是源码分发包sdist里面是setup.py、源码目录、README 这一套东西不是解压就能用的免安装包。常见做法是在内网环境里先传包再通过 pip 安装而不是直接把目录丢进 site-packages。2.2 解压安装与 pip 安装两条路怎么选先看三种实际可用的安装方式按推荐程度排序# 方式一在线安装锁定版本最省事 python -m pip install selenium3.141.0 # 方式二拿到 selenium-3.141.0.zip 后离线安装 python -m pip install /data/pkg/selenium-3.141.0.zip # 方式三解压后按源码方式安装内网老机器上偶尔能见到 cd selenium-3.141.0 python setup.py install方式一会自动解析依赖并处理版本冲突适合能访问 PyPI 的机器。方式二适用于已经把 zip 传到内网或离线机器上的场景pip 从 8.0 开始支持直接安装 zip 包不需要先解压。方式三的问题是它会绕过 pip 的依赖管理setup.py install不会自动检查并安装urllib3、certifi这些运行时依赖装完后 import 阶段才报错排查起来更绕。我一般会优先用方式二因为它保留了 zip 包的完整性pip 能正确识别包元数据后续pip show selenium也能查到安装记录。方式三只在 pip 版本过老、实在没有办法时才用。2.3 装完先别急着写代码验证环境的三行命令安装完成后先确认包真的进了当前 Python 环境# 查看版本和实际加载路径确认不是别的环境里的 selenium python -c import selenium; print(selenium.__version__); print(selenium.__file__) # 查看 pip 记录的安装信息确认包来自哪个文件 python -m pip show selenium如果selenium.__version__输出的是3.141.0说明版本正确如果输出4.x说明环境没锁住后面跑老脚本大概率会碰到AttributeError: WebDriver object has no attribute find_element_by_id。selenium.__file__用来确认加载的路径是不是当前虚拟环境下的 site-packages避免出现「装了一个版本、用的又是另一个版本」的诡异情况。注意3.141.0 的官方元数据里还支持着较老的 Python 版本但现代环境里建议使用 Python 3.63.9 跑它。Python 3.10 以上个别机器会出现构建依赖失败或运行时异常这不是 selenium 代码本身的问题而是底层依赖链太老。3. 把浏览器驱动跑通chromedriver/geckodriver 的匹配与选择3.1 驱动版本匹配表3.141.0 没有自动驱动管理装完 selenium 只是第一步真正决定能不能跑起来的是浏览器驱动。常见配对关系可以按下面的经验值来浏览器驱动匹配原则Chrome 75114chromedriver驱动主版本号必须和 Chrome 主版本号一致比如 Chrome 108 配 chromedriver 108.0.xChrome 115chromedriver下载 Chrome for Testing 通道对应版本主版本一致即可小版本不用严格对齐Firefox ESR / 旧版 Firefoxgeckodriver优先用较新的 geckodriver0.29 以上宽松度比 chromedriver 高一些Edge Chromiummsedgedriver匹配逻辑基本和 Chrome 一致主版本号对齐这张表不是严谨的兼容矩阵而是多年实践归纳出的选择逻辑。chromedriver 的匹配是最严格的主版本号不一致时启动会直接报session not created。geckodriver 相对宽容一些但也不是完全不用管版本太旧或太新都可能出现无法建立会话。常见做法是先去目标机器的浏览器chrome://version页面查到确切版本号再拿主版本号去找对应驱动。不要凭记忆「大概装一个」版本号差一位在 3.141.0 这里就是起不来。3.2 驱动配置的三种落地方式3.141.0 时代的驱动路径配置实际可用的方式比 4.x 少因为还没有Service类核心就是 PATH 和executable_path两条路# 方式 A把驱动目录加进 PATH代码里就不用写路径 export PATH$PATH:/opt/selenium-drivers# 方式 B在代码里直接指定驱动完整路径最直观 from selenium import webdriver options webdriver.ChromeOptions() driver webdriver.Chrome( executable_path/opt/selenium-drivers/chromedriver, optionsoptions, )方式 A 的好处是脚本里不出现机器相关路径多台服务器共用一套代码时比较干净缺点是一旦 PATH 配置丢失所有脚本都会报chromedriver executable needs to be in PATH。方式 B 更直接一台机器一个路径写清楚出问题也好定位。我在实际项目里一般用方式 B因为服务器重启、部署脚本更新都可能导致 PATH 环境变量被重置显式指定路径少一层间接。但要注意路径里不要带中文、空格或特殊符号老版本驱动对这些路径的解析有历史问题容易莫名其妙启动失败。3.3 最小可运行脚本打开页面并读取标题驱动就位后用最小脚本确认整条链路能通from selenium import webdriver options webdriver.ChromeOptions() options.add_argument(--headless) options.add_argument(--no-sandbox) options.add_argument(--disable-dev-shm-usage) driver webdriver.Chrome( executable_path/opt/selenium-drivers/chromedriver, optionsoptions, ) driver.set_page_load_timeout(10) driver.get(data:text/html,titleselenium ready/title) print(driver.title) driver.quit()这个脚本先构造ChromeOptions把无头模式、沙箱关闭、共享内存限制这几个参数加进去然后指定驱动路径启动浏览器。driver.get()加载一个内联 HTML 页面不依赖外网driver.title能打印出页面标题就说明会话建立成功。最后必须driver.quit()释放浏览器进程否则反复跑脚本会残留一堆 chrome 僵尸进程。--no-sandbox在 root 用户或容器环境下是必加的不加启动阶段就会报错。--disable-dev-shm-usage针对/dev/shm空间不足的容器场景加了能少很多随机崩溃。3.4 headless 与 CI 环境的常用参数CI 机器上没有显示器headless 模式是标配。3.141.0 阶段常用参数组合基本固定--headless --disable-gpu --window-size1920,1080 --no-sandbox --disable-dev-shm-usage--disable-gpu在早期版本里能避免 GPU 进程崩溃虽然现代 Chrome 对它的依赖已经弱化但加着不影响结果。--window-size很重要headless 模式默认视口可能只有 800x600页面里依赖视口宽度的元素会被判定为不可见导致点击、截图异常。还有--langzh-CN这类参数按业务需要加。提示3.141.0 的 headless 是老式无头模式部分基于老旧 headless 检测规则的站点能识别出来。如果你发现目标页面行为异常先关掉 headless 手动跑一遍对比再决定是不是无头模式导致。4. 老版 API 与新写法的边界3.141.0 下怎么写才不踩雷4.1 find_element_by_* 在 3.141.0 还是主流老项目里最典型的代码风格就是find_element_by_*这一套。3.141.0 虽然已经把它们标记为弃用但方法还在只是运行时会打 DeprecationWarning。真正删掉是 4.0 的事这正是大量老脚本无法平滑升级的原因。# 3.141.0 可用的老式定位写法 driver.find_element_by_id(login) driver.find_element_by_name(password) driver.find_element_by_class_name(btn-primary) driver.find_element_by_css_selector(.form-group input) driver.find_element_by_xpath(//input[nameuser]) # 4.x 的写法在 3.141.0 里不存在不能混用 # driver.find_element(By.ID, login)如果你的新代码是从 4.x 教程里学的又在维护 3.141.0 环境需要知道一个关键差别By类在这个版本里也存在但find_element方法没有By参数版本可选。也就是说不能拿 4.x 的写法硬套老环境反过来老写法在 4.0 里也直接被删除了。接手老项目时我的判断标准很简单项目里大量出现find_element_by_*就老老实实留在 3.141.0项目如果是从零开始写新脚本直接上 4.x 更好别用老版本给自己埋坑。4.2 隐式等待和显式等待参数怎么设自动化脚本里「元素还没渲染出来就去找」是最常见的失败来源。3.141.0 的等待机制和 4.x 一样分为隐式等待和显式等待两类。隐式等待是全局的设置一次后每次查找元素都会等待一段时间driver.implicitly_wait(10)显式等待针对单个条件更精准、更推荐from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait WebDriverWait(driver, 10, poll_frequency0.5) submit_btn wait.until( EC.element_to_be_clickable((css selector, .submit-btn)) )WebDriverWait的三个参数里10 是超时秒数0.5 是轮询间隔第三个参数是可选的异常信息。它会在每个间隔点检查一次元素是否可点击超时后抛TimeoutException比隐式等待更可控。实际项目中两类等待可以并存全局设一个较长的隐式等待兜底关键交互节点用显式等待保证不抢跑。还有一个容易被忽略的点是页面加载超时。3.141.0 默认页面加载超时不是无限但具体环境差异很大稳妥做法是显式设置driver.set_page_load_timeout(30)这个时间要结合目标页面的真实响应速度来调设太短会导致慢页面还没加载完就报超时设太长会把故障暴露时间拉得很晚。4.3 用 requirements.txt 锁死版本老项目最容易出的问题不是代码而是依赖漂移。某天有人重建虚拟环境pip install selenium装成了最新的 4.x一整批老脚本全崩。锁版本是唯一的止血手段selenium3.141.0 urllib32 certifi2018.0.0urllib32这一条是我在多个项目里踩出来的。selenium 3.141.0 的连接层基于 urllib3 旧版 API 编写如果依赖解析器把所有包都升到最新urllib3 2.x 在某些环境中会引发连接层的异常表现是请求刚开始就莫名失败。常见做法是手动把 urllib3 锁在 1.x保证 selenium 能拿到它熟悉的接口。requirements.txt 写好后用同一份文件重建环境能复现的概率就高很多。5. 排查与避坑selenium 3.141.0 的高发故障清单5.1 ModuleNotFoundError: No module named selenium现象明明下载了 selenium-3.141.0.zip也解压了甚至把解压目录拷进了 site-packagesimport selenium还是报模块不存在。原因把源码包当成免安装包使用是这类报错的根源。zip 里的目录结构是给 pip 用的直接拷进 site-packages 后依赖没有安装包元数据也没有注册解释器找不到正确的模块入口。解决不要手动复制。把解压产生的目录清理干净重新执行python -m pip install /path/to/selenium-3.141.0.zip让 pip 完成依赖解析和注册。5.2 WebDriverException: Message: chromedriver executable needs to be in PATH现象代码、驱动、浏览器看起来都就位了一启动就抛这个异常。原因3.141.0 没有 Selenium Manager驱动路径完全没有自动探测。系统 PATH 里找不到 chromedriver代码又没写executable_path。解决两个方向任选其一。要么把驱动目录放进 PATH要么在webdriver.Chrome()里显式传executable_path。我推荐后者路径写死了换服务器时一眼能看出配置在哪。5.3 session not created: This version of ChromeDriver only supports Chrome version 114现象之前跑得好好的某天开始报驱动只支持某一个 Chrome 版本。原因Chrome 浏览器自动升级了而 chromedriver 还停在旧版本。主版本号一旦不一致3.141.0 连会话都建不起来。解决去chrome://version查看当前浏览器主版本号下载同主版本的 chromedriver 替换旧文件。如果是测试环境更彻底的办法是把 Chrome 更新也锁住不要在自动化机器上自动升浏览器版本。5.4 AttributeError: WebDriver object has no attribute find_element_by_id现象代码是find_element_by_id运行时报对象没有这个属性。原因环境里装的不是 3.141.0而是 selenium 4.x。老 API 在 4.x 里被彻底移除用老代码跑新版本必然炸。解决先跑python -c import selenium; print(selenium.__version__)确认版本然后按 requirements.txt 降到 3.141.0。如果业务允许也可以把代码里的老 API 批量改成find_element(By.ID, ...)但那属于升级改造工作量比降版本大得多。5.5 中文路径或空格路径导致驱动启动失败现象executable_path指向/data/中文目录/chromedriver驱动文件存在且权限正确但启动时报找不到驱动或连接被拒。原因老版本驱动的路径解析对非 ASCII 字符支持不完善空格和特殊字符也会触发类似问题。解决把所有 selenium 相关文件放到纯英文路径下比如/opt/selenium-drivers/chromedriver。这属于「别问为什么改了就好」类的坑路径规整能省下一大堆排查时间。6. 把验证脚本写进日常一条命令确认环境可用与其每次都靠手工跑一个最小脚本不如把环境自检沉淀成固定脚本放进项目仓库的scripts/目录任何机器上新部署后先执行一遍import os import shutil import sys import selenium print(selenium:, selenium.__version__) print(python:, sys.version) candidates [ shutil.which(chromedriver), /opt/selenium-drivers/chromedriver, /usr/local/bin/chromedriver, ] driver_path next((p for p in candidates if p and os.path.exists(p)), None) print(driver:, driver_path if driver_path else NOT FOUND) if not driver_path: sys.exit(2) from selenium import webdriver options webdriver.ChromeOptions() options.add_argument(--headless) options.add_argument(--no-sandbox) options.add_argument(--disable-dev-shm-usage) driver webdriver.Chrome(executable_pathdriver_path, optionsoptions) driver.set_page_load_timeout(10) driver.get(data:text/html,titleenv ok/title) print(browser:, driver.title) driver.quit()脚本会依次检查 selenium 版本、Python 版本、驱动是否存在、浏览器能否真正启动并读取页面标题。任何一个环节不对都会在几秒内暴露而不是等业务脚本跑到中间才报错。接口和定时任务在调用 selenium 前也可以先调用这个检查函数把环境故障和业务故障分开。我以前接手过一个老项目依赖清单里只写了selenium没锁版本。重新部署时 pip 装上了 4.x第二天所有回归任务全挂日志里全是find_element_by_id报错。排查了一整天才发现是版本漂移的问题后来把selenium3.141.0和自检脚本一起放进部署流程再没出过同类事故。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Linux用户管理核心配置文件详解:passwd、shadow、group与sudoers

Linux用户管理核心配置文件详解:passwd、shadow、group与sudoers

以下是我们来看 /etc/passwd、/etc/shadow、/etc/group、/etc/sudoers 这几组文件。Linux 用户管理大多数操作,最终都是在跟这几个文件打交道。面试里问“创建用户后系统做了什么改动”“为什么密码不直接存在 passwd 里”“useradd 和 adduser 有什么区别”&#x…

2026/10/12 2:41:32 阅读更多 →
高校学籍管理系统落地实战:从需求文档到数据库设计与状态流转

高校学籍管理系统落地实战:从需求文档到数据库设计与状态流转

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:40:30 阅读更多 →
数据库课程设计航空订票系统:从ER图到MySQL事务与并发避坑指南

数据库课程设计航空订票系统:从ER图到MySQL事务与并发避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 2:40:30 阅读更多 →

最新新闻

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

ppt-master 的 IBM 品牌身份预设解析:从 Carbon Blue 设计规范到可执行的 design_spec

AI 技能人工智能 【免费下载链接】ppt-master AI 把任意文档生成真正可编辑的 PowerPoint —— 原生形状与动画、演讲者备注可合成音频旁白、还能参考你自己的 .pptx 模板,而不是一张张图片 何雨果出品 项目地址: https://gitcode.com/hugohe3/ppt-master 点击查看…

2026/10/12 3:38:09 阅读更多 →
Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南

Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南

Windows 11 如何装回 Windows 10 任务栏与开始菜单:ExplorerPatcher 完整安装与调优指南 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher…

2026/10/12 3:38:09 阅读更多 →
泡泡战士国服v0.1.5.005客户端版本考古:从版本号到运行环境

泡泡战士国服v0.1.5.005客户端版本考古:从版本号到运行环境

看到“泡泡战士国服客户端v0.1.5.005_20110411”这个标题,很多老玩家应该会心一笑:这行名字里藏着一整个2011年春天的记忆。一个带日期的版本号,其实就是一款网游在某个时间点留下的完整化石,服务器列表、资源索引、版本策略、玩法…

2026/10/12 3:38:09 阅读更多 →
Cortex 数据迁移实战:使用 blocksconvert 将历史 chunks 数据转换为 TSDB blocks

Cortex 数据迁移实战:使用 blocksconvert 将历史 chunks 数据转换为 TSDB blocks

可观测性时序数据库后端指标监控 【免费下载链接】cortex A horizontally scalable, highly available, multi-tenant, long term Prometheus. 项目地址: https://gitcode.com/gh_mirrors/cortex6/cortex 点击查看 免费下载 本指南围绕 Cortex 的 blocksconvert 工…

2026/10/12 3:38:09 阅读更多 →
semantic-router 使用场景指南:为 Agent、云、数据中心、边缘与混合企业构建可编程模型决策层

semantic-router 使用场景指南:为 Agent、云、数据中心、边缘与混合企业构建可编程模型决策层

后端API网关模型推理服务AI Agent 【免费下载链接】semantic-router An open, programmable decision layer for models and compute. 项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router 点击查看 免费下载 vLLM Semantic Router 的核心定位&#xff…

2026/10/12 3:38:09 阅读更多 →
信创落地四层技术栈:芯片、操作系统、数据库与中间件适配攻略

信创落地四层技术栈:芯片、操作系统、数据库与中间件适配攻略

1. 这个项目到底在解决什么问题先说结论:这不是一个“追赶潮流”的选题,而是很多做国产化替代的团队,在立项时才发现自己绕不开的技术底座问题。过去十年,大部分应用系统跑在西方主导的软硬件栈上。芯片用国外架构,操作…

2026/10/12 3:37:09 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →