Chrome 调试器第二次连接不上?

news2025/3/18 21:43:25

一、连接不上

当使用 chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") 连接 Chrome 调试器时,调试一次后就连不上,可能由以下几种原因导致:

1. Chrome 实例关闭

  • 原因:在调试过程结束后,如果 Chrome 实例被意外关闭,那么监听在 127.0.0.1:9222 端口的调试服务也会随之停止。当下次再尝试连接该端口时,由于没有服务在监听,就会连接失败。
  • 解决办法:确保在每次调试前,Chrome 实例已经正确启动并开启了远程调试模式。可以使用以下命令启动 Chrome 并开启远程调试:
# Windows
chrome.exe --remote-debugging-port=9222

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

# Linux
google-chrome --remote-debugging-port=9222

2. 端口被占用

  • 原因:可能在调试过程中,其他程序占用了 9222 端口,导致 Chrome 无法继续监听该端口。或者在 Chrome 关闭后,该端口没有被正确释放。
  • 解决办法
    • 检查端口占用情况
      • Windows:使用 netstat -ano | findstr :9222 命令查看占用 9222 端口的进程 ID。
      • macOS/Linux:使用 lsof -i :9222 命令查看占用 9222 端口的进程信息。
    • 释放端口:根据查找到的进程 ID,结束相应的进程。在 Windows 中可以使用 taskkill /F /PID <进程 ID> 命令;在 macOS/Linux 中可以使用 kill -9 <进程 ID> 命令。
    • 更改端口:如果 9222 端口经常被占用,可以尝试更改 Chrome 的远程调试端口,例如使用 9223 端口:
# 以 Windows 为例
chrome.exe --remote-debugging-port=9223

同时,在代码中也要相应地修改调试地址:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9223")
driver = webdriver.Chrome(options=chrome_options)

3. 浏览器版本与驱动不兼容

  • 原因:如果 Chrome 浏览器版本和 ChromeDriver 版本不兼容,可能会导致连接调试器时出现问题,甚至在调试一次后就无法再次连接。
  • 解决办法:确保 Chrome 浏览器和 ChromeDriver 版本兼容。可以通过以下步骤更新 ChromeDriver:
    1. 查看 Chrome 浏览器的版本号:在 Chrome 浏览器的地址栏输入 chrome://settings/help,即可查看当前 Chrome 版本。
    2. 下载对应版本的 ChromeDriver:访问 ChromeDriver 官方下载页面,下载与 Chrome 版本对应的 ChromeDriver。
    3. 替换旧的 ChromeDriver:将下载的 ChromeDriver 替换掉原来的 ChromeDriver 可执行文件。

4. 代码中未正确处理浏览器会话

  • 原因:如果代码中在调试结束后没有正确关闭浏览器会话,可能会导致 Chrome 处于异常状态,从而无法再次连接调试器。
  • 解决办法:在代码中确保在调试结束后正确关闭浏览器会话。例如:
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)

try:
    # 进行调试操作
    driver.get("https://www.example.com")
finally:
    # 确保在调试结束后关闭浏览器会话
    driver.quit()

二、端口查看

netstat -ano | findstr :9222

  TCP    127.0.0.1:9222         0.0.0.0:0              LISTENING       13588
  TCP    127.0.0.1:9222         127.0.0.1:58148        ESTABLISHED     13588
  TCP    127.0.0.1:9222         127.0.0.1:58149        ESTABLISHED     13588
  TCP    127.0.0.1:58148        127.0.0.1:9222         ESTABLISHED     19784
  TCP    127.0.0.1:58149        127.0.0.1:9222         ESTABLISHED     19784

三、解决

从你执行 netstat -ano | findstr :9222 命令得到的输出结果来看,端口 9222 确实被占用了,有多个与该端口相关的连接处于 ESTABLISHED(已建立连接)状态,下面为你分析具体情况以及对应的解决办法。

分析输出结果

  • 进程 13588:它正在监听 127.0.0.1:9222 端口(LISTENING 状态),并且与 127.0.0.1:58148127.0.0.1:58149 建立了连接(ESTABLISHED 状态)。这个进程很可能是正在运行的 Chrome 实例。
  • 进程 19784:它与 127.0.0.1:9222 建立了两个连接(ESTABLISHED 状态),可能是你的 Python 脚本或者其他程序尝试连接到 Chrome 的调试端口。

可能的问题及解决办法

1. Chrome 实例未正常关闭

如果 Chrome 实例没有正常关闭,就会一直占用 9222 端口。你可以尝试手动结束相关进程。

  • 结束进程:打开任务管理器,切换到“详细信息”选项卡,找到进程 ID 为 1358819784 的进程,然后右键选择“结束任务”。
  • 使用命令行结束进程:以管理员身份运行命令提示符,执行以下命令结束进程:
taskkill /F /PID 13588
taskkill /F /PID 19784
2. 代码中未正确释放资源

如果你的 Python 脚本在结束时没有正确关闭浏览器会话,会导致 Chrome 实例一直运行。确保在代码中使用 driver.quit() 来关闭浏览器会话,示例代码如下:

from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=chrome_options)

try:
    # 进行调试操作
    driver.get("https://www.example.com")
finally:
    # 确保在调试结束后关闭浏览器会话
    driver.quit()
3. 更改端口

如果 9222 端口一直被占用,你可以尝试更改 Chrome 的远程调试端口。

  • 启动 Chrome 并指定新端口:在命令提示符中执行以下命令启动 Chrome 并使用 9223 端口:
chrome.exe --remote-debugging-port=9223
  • 修改代码中的调试地址
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9223")
driver = webdriver.Chrome(options=chrome_options)

完成上述操作后,再次尝试连接调试器,应该就能正常连接了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【深度学习|目标检测】YOLO系列anchor-based原理详解

YOLO之anchor-based 一、关于anchors的设置二、网络如何利用anchor来训练关于register_buffer训练阶段的anchor使用推理阶段的anchor使用 三、训练时的正负样本匹配静态策略&#xff1a;跨分支采样跨anchor采样跨grid采样 动态策略 总结起来其实就是&#xff1a;基于anchor-bas…

Linux 入门:权限的认识和学习

目录 一.shell命令以及运行原理 二.Linux权限的概念 1.Linux下两种用户 cannot open directory .: Permission denied 问题 2.Linux权限管理 1).是什么 2).为什么&#xff08;权限角色目标权限属性&#xff09; 3).文件访问者的分类&#xff08;角色&#xff09; 4).文…

搭建opensbi+kernel+rootfs及基本设备驱动开发流程

目录 一.编译qemu 运行opensbikernelrootfs 1.编译qemu-9.1.1 2.安装riscv64编译器 3. 编译opensbi 4.编译kernel 5.编译rootfs 设备驱动开发流程 1.安装 RISC-V 交叉编译工具链 2.驱动开发准备 3.编写简易中断控制器驱动&#xff08;PLIC&#xff09;​ 4.配置内核…

QT非UI设计器生成界面的国际化

目的 UI设计器生成界面的国际化&#xff0c;比较容易实现些&#xff0c;因为有现成的函数可以调用&#xff0c;基本过程如下&#xff1a; void MainWindow::on_actLang_CN_triggered() {//中文界面qApp->removeTranslator(trans);delete trans;transnew QTranslator;trans…

python | 输入日期,判断这一天是这一年的第几天

题目&#xff1a; 使用 python 编程&#xff0c;实现输入日期&#xff0c;判断这一天是这一年的第几天? 具体实现代码如下&#xff1a; import datetime year input(请输入年份&#xff1a;) month input(请输入月份&#xff1a;) day input(请输入天&#xff1a;) date…

单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32F103C8T6 从资源手册拿到我们的对STM32F103C8T6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 前言 本文章隶属于项目&#xff1a; Charliechen114514/BetterATK: This is…

Maven | 站在初学者的角度配置

目录 Maven 是什么 概述 常见错误 创建错误代码示例 正确代码示例 Maven 的下载 Maven 依赖源 Maven 环境 环境变量 CMD测试 Maven 文件配置 本地仓库 远程仓库 Maven 工程创建 IDEA配置Maven IDEA Maven插件 Maven 是什么 概述 Maven是一个项目管理和构建自…

【css酷炫效果】纯CSS实现3D翻转卡片动画

【css酷炫效果】纯CSS实现3D翻转卡片动画 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90490472 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&am…

并发编程面试题二

1、java线程常见的基本状态有哪些&#xff0c;这些状态分别是做什么的 &#xff08;1&#xff09;创建&#xff08;New&#xff09;&#xff1a;new Thread()&#xff0c;生成线程对象。 &#xff08;2&#xff09;就绪&#xff08;Runnable&#xff09;:当调用线程对象的sta…

Spring Cloud Stream - 构建高可靠消息驱动与事件溯源架构

一、引言 在分布式系统中&#xff0c;传统的 REST 调用模式往往导致耦合&#xff0c;难以满足高并发和异步解耦的需求。消息驱动架构&#xff08;EDA, Event-Driven Architecture&#xff09;通过异步通信、事件溯源等模式&#xff0c;提高了系统的扩展性与可观测性。 作为 S…

突破连接边界!O9201PM Wi-Fi 6 + 蓝牙 5.4 模块重新定义笔记本无线体验

在当今数字化时代&#xff0c;笔记本电脑已成为人们工作、学习和娱乐的必备工具。而无线连接技术&#xff0c;作为笔记本电脑与外界交互的关键桥梁&#xff0c;其性能的优劣直接关乎用户体验的好坏。当下&#xff0c;笔记本电脑无线连接领域存在诸多痛点&#xff0c;严重影响着…

Python----计算机视觉处理(Opencv:图像颜色替换)

一、开运算 开运算就是对图像先进行腐蚀操作&#xff0c; 然后进行膨胀操作。开运算可以去除二值化图中的小的噪点&#xff0c;并分离相连的物体。 其主要目的就是消除那些小白点 在开运算组件中&#xff0c;有一个叫做kernel的参数&#xff0c;指的是核的大小&#xff0c;通常…

一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们来新建一个的蓝图模块-班级模块&#xff0c;后面可以和学生模块&#xff0c;实现一对多的数据库操作。 blueprint下新建g…

Matlab 风力发电机磁悬浮轴承模型pid控制

1、内容简介 略 Matlab 174-风力发电机磁悬浮轴承模型pid控制 可以交流、咨询、答疑 2、内容说明 磁悬浮轴承具有无接触、无摩擦、高速度、高精度、能耗低、不需要需润滑无油污染、可靠性高、寿命长和密封等一系列显著的优点。将磁悬浮技术应用于风力发电机中可以降低风机切入…

FPGA中级项目1——IP核(ROM 与 RAM)

FPGA中级项目1——IP核&#xff08;ROM 与 RAM&#xff09; IP核简介 在 FPGA&#xff08;现场可编程门阵列&#xff09;设计中&#xff0c;IP 核&#xff08;Intellectual Property Core&#xff0c;知识产权核&#xff09;是预先设计好的、可重用的电路模块&#xff0c;用于实…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统&#xff08;Time Delay Systems&#xff09;时&#xff0c;使用传统的PID控制可能会面临挑战&#xff0c;因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

Unity 笔记:在EditorWindow中绘制 Sorting Layer

在Unity开发过程中&#xff0c;可能会对旧资源进行批量修改&#xff0c;一个个手动修改费人费事&#xff0c;所以催生出了一堆批量工具。 分享一下在此过程中绘制 Sorting Layer 面板的代码脚本。 示意图&#xff1a; 在 EditorGUI 和 EditorGUILayer 中内置了 SortingLayerF…

2024浙江大学计算机考研上机真题

2024浙江大学计算机考研上机真题 2024浙江大学计算机考研复试上机真题 2024浙江大学计算机考研机试真题 2024浙江大学计算机考研复试机试真题 历年浙江大学计算机复试上机真题 历年浙江大学计算机复试机试真题 2024浙江大学计算机复试上机真题 2024浙江大学计算机复试机试真题 …

蓝桥杯嵌入式赛道复习笔记2(按键控制LED灯,双击按键,单击按键,长按按键)

硬件原理解释 这张图展示了一个简单的按键电路原理图&#xff0c;其中包含四个按键&#xff08;PB0、PB1、PB2、PB3、PA0&#xff09;&#xff0c;每个按键通过一个10kΩ的上拉电阻连接到VDD&#xff08;电源电压&#xff09;&#xff0c;并接地&#xff08;GND&#xff09;。 …

每天五分钟深度学习PyTorch:循环神经网络RNN的计算以及维度信息

本文重点 前面我们学习了RNN从何而来,以及它的一些优点,我们也知道了它的模型的大概情况,本文我们将学习它的计算,我们来看一下RNN模型的每一个时间步在计算什么? RNN的计算 ht-1是上一时刻的输出,xt是本时刻的输入,然后二者共同计算得到了ht,然后yt通过ht计算得到,…