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有什么区别…

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

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

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

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

嵌入式入门Day38

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

kubernetes第七天

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

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

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

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

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

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

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

MySQL 子查询(重在练习)

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

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

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

CTFshow—文件包含

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

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

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

Cannot run program “docker“: CreateProcess error=2,系统找不到指定的文件

今天被这个问题坑了, 网上教程全是直接装插件就行 ,结果我连接可以成功 但是执行docker compose 就会出错, 检测配置 报错com.intellil,execution,process.ProcessNotCreatedException: Cannot run program “docker”: CreateProcess error2,系统找不到指定的文件 gpt 要我去…

Blender 2D动画与MATLAB数学建模:跨界融合的创新实践探索

文章目录 一、数据交换:从科学计算到创意表达的桥梁二、脚本自动化:从手动操作到无缝连接的升级三、跨界融合的创新实践意义《Blender 2D动画制作从入门到精通》亮点内容简介作者简介 《MATLAB数学建模从入门到精通》亮点内容简介作者简介 在数字创意与科…

HarmonyOS Next 日志工具介绍

HarmonyOS Next 日志工具介绍 在HarmonyOS Next开发中,日志是我们调试定位问题的主要手段,不管是hilog还是console,最终都可以输出到DevEco Studio的日志模块中: 在这里可以过滤应用进程、日志级别、日志内容呢,也可…

NUTTX移植到STM32

STM32移植NUTTX 1. Ubuntu下搭建开发环境1.1 先决条件1.2 下载 NuttX1.3 使用Make 进行编译1.4 烧录运行 2.通过NUTTX点亮LED2.1 部署操作系统2.2 修改配置文件2.3 编译运行程序 开发板:DshanMCUF407 官方开发文档:安装 — NuttX latest 文档 参考文档&…

【微服务】4、服务保护

微服务架构与组件介绍 单体架构拆分:黑马商城早期为单体架构,后拆分为微服务架构。跨服务调用与组件使用 服务拆分后存在跨服务远程调用,如下单需查询商品信息,使用openfeign组件解决。服务间调用关系复杂,需维护服务…

【网络安全 | 漏洞挖掘】通过模拟功能实现提权(Bugcrowd)

未经许可,不得转载。 我将与大家分享我在 Bugcrowd 的某个项目中发现的一个漏洞,该项目中有一个“用户模拟”功能。 什么是用户模拟? 用户模拟允许管理员在不知晓用户凭据的情况下“以用户身份登录”。这种功能常见于管理员需要调试问题、审查用户权限或解决投诉的平台中。…

安装MySQL的五种方法(Linux系统和Windows系统)

一.在Linux系统中安装MySQL 第一种方法:在线YUM仓库 首先打开MySQL官网首页 www.mysql.com 找到【DOWNLOADS】选项,点击 下拉,找到 【MySQL Community(GPL) Downloads】 在社区版下载页面中,【 MySQL Yum Repository 】链接为在线仓库安装…

【Spring Boot 应用开发】-01 初识

特性 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是帮助开发者快速创建独立的、生产级的基于 Spring 框架的应用程序。以下是 Spring Boot 的一些主要特点: 简化配置:Spring Boot 提供了自动配置机制,能够根据类路径…