seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢

news/2025/1/12 7:58:07/

python

好的,使用 Python 来监控 Chrome 的调试数据并获取控制台信息,可以使用 websocket-client 库来连接 Chrome 的 WebSocket 接口。以下是一个详细的示例:

1. 安装必要的库

首先,你需要安装 websocket-client 库。可以使用以下命令进行安装:

sh复制

pip install websocket-client

2. 启动 Chrome 并启用远程调试

打开命令行工具,运行以下命令启动 Chrome 并启用远程调试:

sh复制

chrome.exe --remote-debugging-port=9222

3. 连接到 Chrome 实例并获取控制台信息

以下是一个 Python 脚本,用于连接到 Chrome 实例并获取控制台信息:

Python复制

import websocket
import json# 连接到 Chrome 的 WebSocket 接口
ws = websocket.create_connection('ws://127.0.0.1:9222/devtools/browser/02fd130b-6cce-498d-bf53-7dda22f9f35a')# 发送命令启用 Runtime 域
ws.send(json.dumps({'id': 1,'method': 'Runtime.enable','params': {}
}))# 发送命令启用 Console 域
ws.send(json.dumps({'id': 2,'method': 'Console.enable','params': {}
}))# 监听消息
def on_message(ws, message):data = json.loads(message)if 'method' in data and data['method'] == 'Console.messageAdded':print('Console message:', data['params']['message']['text'])# 保持连接,持续监听消息
while True:message = ws.recv()on_message(ws, message)# 关闭连接
ws.close()

4. 详细说明

  • 连接到 WebSocket:使用 websocket.create_connection 方法连接到 Chrome 的 WebSocket 接口。

  • 启用 Runtime 和 Console 域:发送 JSON 命令启用 RuntimeConsole 域,以便接收控制台消息。

  • 监听消息:定义 on_message 函数来处理接收到的消息。如果消息是 Console.messageAdded,则打印控制台消息。

  • 保持连接:使用 while True 循环持续监听消息。

  • 关闭连接:在适当的时候关闭 WebSocket 连接。

5. 运行脚本

运行上述脚本后,打开一个 Chrome 标签页并访问任意网站,你将看到控制台输出的信息。

6. 注意事项

  • 确保 Chrome 已经启动并启用了远程调试。

  • WebSocket 连接的 URL 可能会根据你的 Chrome 实例而有所不同,确保使用正确的 URL。

  • 你可以通过访问 http://127.0.0.1:9222/json 来获取当前所有打开的标签页信息,从而获取正确的 WebSocket URL。

希望这个示例对你有帮助!如果你有其他问题或需要进一步的帮助,请随时告诉我。

notejs

1. 确保 Chrome 浏览器正确启动并监听调试端口

首先,确保 Chrome 浏览器已经正确启动并监听了指定的调试端口(在你的代码中是9999端口)。可以通过以下命令在命令行中启动 Chrome 并开启调试模式:

bash复制

chrome.exe --remote-debugging-port=9999 --remote-allow-origins=* --start-maximized

确保 Chrome 路径正确,或者将 Chrome 路径添加到系统环境变量中。

2. 检查端口是否被占用

使用以下命令检查9999端口是否被其他进程占用:

bash复制

netstat -ano | findstr "9999"

如果端口被占用,可以选择其他端口或结束占用该端口的进程。

3. 确保 Selenium 配置正确

在你的代码中,确保 webdriver.ChromeOptions 配置正确,并且 debugger_address 设置为 localhost:9999。你的代码看起来是正确的,但可以尝试以下步骤确保没有遗漏:

Python复制

import time
import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 启动 Chrome 浏览器并开启调试模式
EXEC_DIR_PATH = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
command = f'{EXEC_DIR_PATH} --remote-debugging-port=9999 --remote-allow-origins=* --start-maximized'
subprocess.Popen(command, shell=True)
time.sleep(1)  # 等待浏览器启动# 浏览器配置对象
options = Options()
options.debugger_address = 'localhost:9999'
driver = webdriver.Chrome(options=options)# 打开一个网页进行测试
driver.get('https://www.example.com')

4. 检查 ChromeDriver 版本

确保你使用的 ChromeDriver 版本与 Chrome 浏览器版本兼容。不兼容的版本可能导致连接失败或其他问题。可以通过以下命令查看 ChromeDriver 版本:

bash复制

chromedriver --version

如果版本不兼容,可以下载并安装与你的 Chrome 浏览器版本匹配的 ChromeDriver。

5. 检查防火墙和网络设置

确保防火墙没有阻止 Chrome 浏览器监听9999端口。可以暂时关闭防火墙进行测试,或者添加规则允许 Chrome 使用该端口。

6. 使用其他调试命令

如果 Emulation.setEmitTouchEventsForMouse 命令仍然失败,可以尝试使用其他调试命令来模拟触摸事件,例如 Emulation.setTouchEmulationEnabled

Python复制

driver.execute_cdp_cmd('Emulation.setTouchEmulationEnabled', {'enabled': True, 'configuration': 'mobile'})

通过以上步骤,你应该能够解决 Emulation.setEmitTouchEventsForMouse 命令失败的问题。如果问题仍然存在,建议进一步检查 Chrome 和 Selenium 的日志,查找更详细的错误信息。


http://www.ppmy.cn/news/1562442.html

相关文章

【工具箱】GitHub命令行访问配置

文章目录 配置SSH访问配置个人访问令牌(代替原密码)GitHub Desktop其它 GitHub是编程社区广泛使用的产品,它的使用范围已经扩展到很多需要多版本控制的系统中了。本文介绍配置 GitHub 的本地访问的方法,以及图形化界面&#xff08…

Maven下载安装配置

下载 Maven 1、进入 Maven官方下载地址 2、点击 Download,再点击 Maven 3 archives,查看 3.x.x 版本的 Maven 3、点击 3.9.6 文件夹(对应版本号),再点击 binaries 文件夹,点击下载 apache-maven-3.9.6-bin.zip binaries&#xff1…

汽车信息安全 -- S32K1如何更新BOOT_MAC

目录 1.安全启动模式回顾 2.为什么要讨论BOOT_MAC 3.S32K1如何更新? 1.安全启动模式回顾 之前提到过,S32K1系列提供了Crypto Service Engine硬件加密模块(简称CSEc),大家可以通过该芯片系统寄存器SDID.FEATURES(System Device Identification Register)来判断自己的片子…

VUE3 常用的组件介绍

Vue 组件简介 Vue 组件是构建 Vue 应用程序的核心部分,组件帮助我们将 UI 分解为独立的、可复用的块,每个组件都有自己的状态和行为。Vue 组件通常由模板、脚本和样式组成。组件的脚本部分包含了各种配置选项,用于定义组件的逻辑和功能。 组…

ISP流程--去马赛克详解

前言 本期我们将深入讨论ISP流程中的去马赛克处理。我们熟知,彩色图像由一个个像元组成,每个像元又由红、绿、蓝(RGB)三通道构成。而相机传感器只能感知光的强度,无法直接感知光谱信息,即只有亮暗而没有颜色…

计算机网络 (33)传输控制协议TCP概述

一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层,即传输层,为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议,但两者在设计上有明显的不同&…

搭建Hadoop分布式集群

软件和操作系统版本 Hadoop框架是采用Java语言编写,需要java环境(jvm) JDK版本:JDK8版本 ,本次使用的是 Java: jdk-8u431-linux-x64.tar.gz Hadoop: hadoop-3.3.6.tar.gz 三台Linux虚拟节点: CentOS-7-x86_64-DVD-2…

LeetCode hot100-96

136. 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。这题的解答挺有意…