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

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.mzph.cn/bicheng/67775.shtml

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

相关文章

IT面试求职系列主题-Jenkins

想成功求职,必要的IT技能一样不能少,先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统,并在发生更改时启动和监视构建系统。 2)Maven、Ant和Jenkins有什么区别…

WEBRTC前端播放 播放器组件封装

组件封装 <template><div><div class"option"><input v-model"useStun" type"checkbox" /><label for"use-stun">Use STUN server</label></div><button click"startPlay"&g…

(五)ROS通信编程——参数服务器

前言 参数服务器在ROS中主要用于实现不同节点之间的数据共享&#xff08;P2P&#xff09;。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点也可以往其中存储数据&#xff0c;关…

攻防靶场(34):隐蔽的计划任务提权 Funbox1

目录 1. 侦查 1.1 收集目标网络信息&#xff1a;IP地址 1.2 主动扫描&#xff1a;扫描IP地址段 1.3 搜索目标网站 2. 初始访问 2.1 有效账户&#xff1a;默认账户 2.2 利用面向公众的应用 2.3 有效账户&#xff1a;默认账户 3. 权限提升 3.1 计划任务/作业&#xff1a;Cron 靶场…

嵌入式入门Day38

C Day1 第一个C程序C中的输入输出输出操作coutcin练习 命名空间使用方法自定义命名空间冲突问题 C对字符串的扩充C风格字符串的使用定义以及初始化C风格字符串与C风格字符串的转换C风格的字符串的关系运算常用的成员变量输入方法 布尔类型C对堆区空间使用的扩充作业 第一个C程序…

kubernetes第七天

1.影响pod调度的因素 nodeName 节点名 resources 资源限制 hostNetwork 宿主机网络 污点 污点容忍 Pod亲和性 Pod反亲和性 节点亲和性 2.污点 通常是作用于worker节点上&#xff0c;其可以影响pod的调度 语法&#xff1a;key[value]:effect effect:[ɪˈfek…

docker minio镜像arm64架构

minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造&#xff0c;服务器资源改为了arm64架构&#xff0c;统信uos docker镜像库内没有对应的minio镜像&#xff0c;当前镜像为拉取源码后&#xff0c;自编译打包镜像&#xff0c;亲测可用。 使用方式 将tar包导入到服务器…

【DNS 阿里云,域名解析,解析到IP的指定端口】

- 进入 阿里云域名解析界面 - 点击 解析设置 - 添加记录 1.添加一条 A/AAAA 类型解析你的服务器的IP地址&#xff08;不需要带端口号&#xff0c;这条解析只是起到中转作用&#xff09; 示例&#xff1a;主机记录&#xff1a;aa.bb.com 记录值&#xff1a;xxx.xxx.xxx.xxx (…

前端实时显示当前在线人数的实现

实时显示当前在线人数的实现 本文档提供了在网页上实时显示当前在线人数的多种实现方法&#xff0c;包括使用 WebSocket 实现实时更新和轮询方式实现非实时更新。 方法一&#xff1a;使用 WebSocket 实现实时更新 服务器端设置 通过 Node.js 和 WebSocket 库&#xff08;如 …

线性表的接口定义及使用

定义接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _001_线性表 {interface IListDS<T>//定义接口{int GetLength();void Clear();bool IsEmpty();void Add(T item);void Inser…

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数&#xff0c;实现直流无刷电机控制&#x…

Vue3 + vue-virtual-scroller虚拟列表实现加载长列表

一、安装 github地址&#xff1a;https://vue-virtual-scroller-demo.netlify.app/chat demo运行地址&#xff1a;https://vue-virtual-scroller-demo.netlify.app/chat npm安装&#xff1a; npm install --save vue-virtual-scrollernextyarn安装&#xff1a; yarn add vu…

Google发布图像生成新工具Whisk:无需复杂提示词,使用图像和人工智能将想法可视化并重新混合

Whisk 是 Google Labs 的一项新实验&#xff0c;可使用图像进行快速而有趣的创作过程。Whisk不会生成带有长篇详细文本提示的图像&#xff0c;而是使用图像进行提示。只需拖入图像&#xff0c;即可开始创建。 whisk总结如下&#xff1a; Whisk 是 Google 实验室最新的生成图像实…

【面试题】技术场景 4、负责项目时遇到的棘手问题及解决方法

工作经验一年以上程序员必问问题 面试题概述 问题为在负责项目时遇到的棘手问题及解决方法&#xff0c;主要考察开发经验与技术水平&#xff0c;回答不佳会影响面试印象。提供四个回答方向&#xff0c;准备其中一个方向即可。 1、设计模式应用方向 以登录为例&#xff0c;未…

MySQL 子查询(重在练习)

第九章: 子查询 1.子查询的需求分析和问题解决 1.1基本使用 子查询(内查询)在主查询之前一次执行完成 子查询的结果被主查询(外查询)调用 注意事项 子查询要包含在括号内 将子查询放在比较条件的右侧 单行操作符对应单行子查询,多行操作符对应多行子查询 1.2子查询的分类…

物联网开发 的开发语言建议

对于物联网开发&#xff0c;选择合适的编程语言取决于具体的项目需求、硬件平台以及开发团队的技能。以下是几种常用的物联网开发语言及其适用场景&#xff0c;特别考虑到您当前的工作空间中包含 JavaScript 和 Vue 等技术栈&#xff1a; JavaScript (Node.js) 优点&#xff1a…

LeetCode:3298. 统计重新排列后包含另一个字符串的子字符串数目 II(滑动窗口 Java)

目录 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 滑动窗口 原理思路&#xff1a; 3298. 统计重新排列后包含另一个字符串的子字符串数目 II 题目描述&#xff1a; 给你两个字符串 word1 和 word2 。 如果…

海外招聘丨卡尔斯塔德大学—互联网隐私和安全副高级讲师

雇主简介 卡尔斯塔德大学以研究、教育和合作为基础。通过让社区参与知识发展&#xff0c;卡尔斯塔德大学为地区、国家和国际研究和教育发展做出了贡献&#xff0c;旨在提高可持续性、民主和健康。我们富有创造力的学术环境以好奇心、勇气和毅力为特征。通过采取批判性方法&…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)

引言 在移动应用中&#xff0c;图片上传是一个常见的功能&#xff0c;尤其是在个人中心或社交平台场景中&#xff0c;用户经常需要上传图片到服务器&#xff0c;用以展示个人风采或记录美好瞬间。然而&#xff0c;实现多图片上传的过程中&#xff0c;如何设计高效的上传逻辑并…