当前位置: 首页 > article >正文

Open-AutoGLM进阶玩法:结合Python脚本,实现自动化测试与数据采集

Open-AutoGLM进阶玩法结合Python脚本实现自动化测试与数据采集1. 前言从基础到进阶在前一篇文章中我们已经介绍了Open-AutoGLM的基础使用方法包括环境配置、设备连接和基本指令执行。本文将深入探讨如何通过Python脚本扩展Open-AutoGLM的能力实现更复杂的自动化任务。为什么需要进阶玩法基础指令只能完成简单的一次性任务实际业务场景往往需要复杂的逻辑判断和流程控制自动化测试和数据采集需要精确的时序控制和结果记录通过Python API我们可以构建复杂的自动化流程实现条件判断和循环控制自动记录执行结果和截图与其他系统集成2. 环境准备与基础回顾2.1 确保基础环境就绪在开始进阶开发前请确认已完成以下准备工作已完成ADB环境配置adb devices能正确显示设备已安装Python 3.10和必要的依赖库已配置好模型服务本地或云端手机已开启开发者模式和USB调试2.2 初始化Python环境建议使用虚拟环境管理项目依赖python -m venv autoglm-env source autoglm-env/bin/activate # Linux/Mac autoglm-env\Scripts\activate # Windows pip install open-autoglm3. Python API核心功能解析3.1 基础API调用Open-AutoGLM提供了完整的Python API我们可以通过编程方式控制手机from phone_agent import PhoneAgent from phone_agent.model import ModelConfig # 配置模型连接 model_config ModelConfig( base_urlhttp://localhost:8000/v1, # 本地或云端API地址 model_nameautoglm-phone-9b, device_id192.168.1.100:5555 # 设备ID或IP ) # 创建Agent实例 agent PhoneAgent(model_configmodel_config) # 执行简单任务 result agent.run(打开微信) print(f任务执行结果: {result})3.2 高级控制功能API提供了更精细的控制能力# 获取当前屏幕状态 screen_state agent.get_screen_state() print(f当前应用: {screen_state.current_app}) print(f屏幕分辨率: {screen_state.resolution}) # 直接执行ADB命令 adb_result agent.adb_execute(shell pm list packages) print(f已安装应用: {adb_result}) # 获取屏幕截图并保存 screenshot agent.capture_screen() with open(screen.png, wb) as f: f.write(screenshot)4. 自动化测试实战4.1 构建测试框架我们可以创建一个完整的自动化测试框架import unittest from phone_agent import PhoneAgent class AppTest(unittest.TestCase): classmethod def setUpClass(cls): cls.agent PhoneAgent(...) # 初始化配置 def test_login_flow(self): 测试登录流程 result self.agent.run(打开测试应用) self.assertTrue(result.success, 应用打开失败) result self.agent.run(点击登录按钮) self.assertTrue(result.success, 登录按钮点击失败) result self.agent.run(输入测试账号) self.assertTrue(result.success, 账号输入失败) # 添加更多测试步骤... if __name__ __main__: unittest.main()4.2 测试用例设计技巧有效的测试用例应包含前置条件检查def check_prerequisites(self): # 检查网络连接 result self.agent.adb_execute(shell ping -c 1 8.8.8.8) self.assertIn(1 received, result, 网络连接异常)异常场景测试def test_invalid_login(self): 测试错误密码处理 self.agent.run(输入错误密码) result self.agent.run(点击登录) self.assertFalse(result.success, 错误密码应登录失败) self.assertIn(密码错误, result.message, 未显示正确错误提示)性能指标收集import time def test_performance(self): 测试页面加载时间 start time.time() self.agent.run(打开设置页面) load_time time.time() - start print(f页面加载时间: {load_time:.2f}秒) self.assertLess(load_time, 3.0, 页面加载超时)5. 数据采集系统实现5.1 基础数据采集def collect_app_data(app_name, max_items10): 采集指定应用的数据 agent.run(f打开{app_name}) data [] for i in range(max_items): # 获取当前项目信息 agent.run(长按当前项目) item_info agent.get_screen_text() data.append(item_info) # 截图保存 screenshot agent.capture_screen() with open(fitem_{i}.png, wb) as f: f.write(screenshot) # 滑动到下一项 agent.run(向下滑动) return data5.2 高级采集策略智能翻页采集def smart_collect(agent, start_cmd, item_xpath, next_cmd, max_page5): 智能翻页采集 agent.run(start_cmd) collected set() for _ in range(max_page): # 获取当前页所有项目 items agent.find_elements(item_xpath) new_items [i for i in items if i not in collected] if not new_items: break # 没有新数据时停止 # 处理新项目 for item in new_items: process_item(item) collected.add(item) # 翻页 agent.run(next_cmd) return collected6. 定时任务与自动化工作流6.1 使用APScheduler实现定时任务from apscheduler.schedulers.blocking import BlockingScheduler def morning_routine(): agent.run(打开天气应用查看今日预报) agent.run(打开新闻应用浏览头条) agent.run(播放每日推荐音乐) scheduler BlockingScheduler() scheduler.add_job(morning_routine, cron, hour8, minute0) # 每天8点执行 scheduler.start()6.2 构建复杂工作流from transitions import Machine class Workflow: states [idle, preparing, running, completed] def __init__(self, agent): self.agent agent self.machine Machine(modelself, statesWorkflow.states, initialidle) # 定义状态转换 self.machine.add_transition(start, idle, preparing) self.machine.add_transition(prepare_done, preparing, running) self.machine.add_transition(complete, running, completed) def on_enter_preparing(self): print(准备工作开始...) self.agent.run(打开必要应用) self.prepare_done() def on_enter_running(self): print(执行主任务...) self.agent.run(执行复杂任务流程) self.complete()7. 异常处理与日志记录7.1 健壮的异常处理机制import logging from phone_agent.exceptions import AgentError logging.basicConfig(filenameautoglm.log, levellogging.INFO) def safe_run(agent, command, max_retry3): 带重试的任务执行 for attempt in range(max_retry): try: result agent.run(command) logging.info(f成功执行: {command}) return result except AgentError as e: logging.warning(f尝试 {attempt1} 失败: {str(e)}) if attempt max_retry - 1: logging.error(f命令 {command} 最终失败) raise agent.reconnect() # 尝试重新连接7.2 详细的执行日志class LoggingAgent: 带日志记录的Agent包装器 def __init__(self, agent): self.agent agent def run(self, command): logging.info(f执行命令: {command}) start_time time.time() try: result self.agent.run(command) duration time.time() - start_time logging.info(f命令成功 (耗时: {duration:.2f}s): {result}) return result except Exception as e: logging.error(f命令失败: {str(e)}) raise8. 性能优化技巧8.1 减少不必要的截图class OptimizedAgent: 优化性能的Agent实现 def __init__(self, agent): self.agent agent self.last_screen None def run(self, command): # 只在必要时获取新截图 if self.need_new_screenshot(command): self.last_screen self.agent.capture_screen() # 使用缓存截图进行处理 return self.agent.process_command(command, self.last_screen) def need_new_screenshot(self, command): # 根据命令判断是否需要新截图 return 滑动 in command or 打开 in command8.2 并行执行任务from concurrent.futures import ThreadPoolExecutor def batch_run(agent, commands): 并行执行多个命令 with ThreadPoolExecutor(max_workers3) as executor: futures [executor.submit(agent.run, cmd) for cmd in commands] return [f.result() for f in futures]9. 实际应用案例9.1 电商价格监控系统def monitor_price(product_url, target_price): 监控商品价格直到低于目标价 while True: agent.run(f打开浏览器访问 {product_url}) price_text agent.get_screen_text(region(100, 200, 300, 50)) # 价格区域 current_price extract_price(price_text) if current_price target_price: agent.run(点击购买按钮) agent.run(完成结算流程) send_notification(f商品已降价至 {current_price}) break time.sleep(3600) # 每小时检查一次9.2 自动化社交媒体管理def auto_post_social_media(content, platforms): 多平台自动发布内容 for platform in platforms: try: agent.run(f打开{platform}) agent.run(点击发布按钮) agent.type(content) agent.run(点击发布确认) logging.info(f{platform} 发布成功) except Exception as e: logging.error(f{platform} 发布失败: {str(e)}) continue10. 总结与最佳实践通过Python脚本扩展Open-AutoGLM我们可以构建强大的自动化系统。以下是一些最佳实践模块化设计将常用功能封装成函数或类完善的日志记录详细执行过程便于排查问题健壮的错误处理预料并妥善处理各种异常情况性能考量优化截图频率和网络请求安全第一避免处理敏感信息必要时人工接管进阶学习建议研究Open-AutoGLM的源码理解内部机制结合计算机视觉技术提升元素识别精度探索与RPA工具集成实现更复杂的自动化获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Open-AutoGLM进阶玩法:结合Python脚本,实现自动化测试与数据采集

Open-AutoGLM进阶玩法:结合Python脚本,实现自动化测试与数据采集 1. 前言:从基础到进阶 在前一篇文章中,我们已经介绍了Open-AutoGLM的基础使用方法,包括环境配置、设备连接和基本指令执行。本文将深入探讨如何通过P…...

Qwen3-ASR-0.6B在Linux环境下的高效部署方案

Qwen3-ASR-0.6B在Linux环境下的高效部署方案 1. 引言 语音识别技术正在快速改变我们与设备交互的方式,而Qwen3-ASR-0.6B作为一款轻量级但功能强大的语音识别模型,为开发者提供了在Linux服务器上部署高效语音识别服务的新选择。这个模型虽然只有6亿参数…...

手把手教你用LongCat-Image-Editn V2镜像:从部署到第一次成功改图

手把手教你用LongCat-Image-Editn V2镜像:从部署到第一次成功改图 想不想体验用一句话就能让照片里的猫变成狗,或者给风景照换个天空颜色?今天我要带大家从零开始,一步步教你使用LongCat-Image-Editn V2这个神奇的AI改图工具。这…...

Windows系统AI组件移除方案:数据守护者的安全防护指南

Windows系统AI组件移除方案:数据守护者的安全防护指南 【免费下载链接】RemoveWindowsAI Force Remove Copilot and Recall in Windows 项目地址: https://gitcode.com/GitHub_Trending/re/RemoveWindowsAI 在数字化办公环境中,某企业用户因Windo…...

Linux磁盘空间被‘幽灵文件‘占满?手把手教你用lsof+truncate彻底清理(附排查流程图)

Linux磁盘空间被幽灵文件占满?手把手教你排查与清理 你是否遇到过这样的场景:服务器磁盘明明显示已满,但用du命令统计却只占用了很小一部分空间?这种"空间消失"现象通常是由于文件被删除但仍在被进程占用导致的。本文将…...

UDS协议实战:如何用Python模拟单帧与多帧传输(附完整代码)

UDS协议实战:如何用Python模拟单帧与多帧传输(附完整代码) 在汽车电子开发领域,UDS(Unified Diagnostic Services)协议是诊断通信的核心标准。对于嵌入式开发者而言,掌握UDS网络层的单帧与多帧传…...

vCenter密码策略踩坑实录:如何用SSO账户绕过root密码过期问题

vCenter密码策略实战指南:SSO账户的权限管理与安全平衡术 那天凌晨三点,数据中心告警铃声刺破了夜的宁静。vCenter服务器因root密码过期而锁定了所有管理操作,整个虚拟化平台陷入半瘫痪状态。运维团队手忙脚乱地翻找密码本,却发现…...

从零开始打造个性化双语电子书:AI翻译工具的场景化实践指南

从零开始打造个性化双语电子书:AI翻译工具的场景化实践指南 【免费下载链接】bilingual_book_maker Make bilingual epub books Using AI translate 项目地址: https://gitcode.com/gh_mirrors/bil/bilingual_book_maker 一、核心价值:为什么需要…...

Coqui STT 文件下载效率优化实战:从原理到批量处理最佳实践

最近在做一个语音识别的项目,用到了 Coqui STT 这个很棒的开源工具。但在项目初期,我就遇到了一个不大不小的麻烦:下载那些动辄几百兆甚至上G的预训练模型文件,实在是太慢了!单线程下载不仅耗时,网络一波动…...

ECharts树形图实战:5分钟搞定企业组织架构可视化(附完整代码)

ECharts树形图实战:5分钟搞定企业组织架构可视化(附完整代码) 当企业规模扩大时,组织架构的复杂性往往呈指数级增长。传统的静态图表或PPT已经难以满足实时更新、动态展示的需求。ECharts作为一款强大的数据可视化库,其…...

MATLAB新手必看:5分钟搞定OBJ文件导入与3D模型可视化

MATLAB新手必看:5分钟搞定OBJ文件导入与3D模型可视化 当你第一次接触3D模型处理时,OBJ文件格式可能是最常遇到的挑战之一。作为MATLAB初学者,你可能已经发现这个强大的计算平台不仅能处理数值运算,还能成为3D可视化的得力助手。本…...

手把手教你用PHPStudy搭建Pikachu靶场(附SSRF漏洞实战演示)

从零构建Pikachu靶场:SSRF漏洞攻防全景实战指南 当我在三年前第一次接触网络安全实训时,Pikachu靶场就像一扇神秘的大门。这个以宝可梦命名的开源漏洞演练平台,用卡通化的界面隐藏着真实世界中最危险的漏洞形态。今天,我将带您从环…...

通用物体识别-ResNet18快速入门:内置WebUI,拖拽上传图片即识别

通用物体识别-ResNet18快速入门:内置WebUI,拖拽上传图片即识别 1. 为什么你需要一个开箱即用的图像识别服务? 想象一下这个场景:你正在开发一个智能相册应用,用户上传了成千上万张照片,你需要自动为这些照…...

Unity游戏开发中的抽象类与虚方法:如何优雅地管理游戏状态?

Unity游戏开发中的抽象类与虚方法:如何优雅地管理游戏状态? 在Unity游戏开发中,状态管理是构建复杂游戏逻辑的核心挑战之一。想象一下,当玩家从主菜单切换到战斗场景,再进入暂停界面时,游戏需要精确控制每个…...

WeUI组件库避坑指南:如何按需引入Button组件不踩坑

WeUI组件库避坑指南:如何按需引入Button组件不踩坑 微信小程序开发中,组件库的使用一直是提升效率的关键。WeUI作为微信官方推出的样式库,与原生视觉体验高度一致,尤其适合追求界面统一性的项目。但在实际开发中,不少团…...

CUDA实战:用GPU加速TopK问题求解(附完整代码与性能对比)

CUDA实战:用GPU加速TopK问题求解(附完整代码与性能对比) 在处理海量数据时,如何快速找到前K个最大值(TopK问题)是许多数据密集型应用的核心需求。传统CPU串行处理方式在面对数亿级数据时往往力不从心&#…...

智能家居避坑指南:用Home Assistant桥接米家和HomeKit的5个关键设置

智能家居避坑指南:用Home Assistant桥接米家和HomeKit的5个关键设置 当你的床头灯能用Siri控制开关,而空气净化器却只能通过米家APP操作时,这种割裂感正是智能家居生态的典型痛点。本文将为苹果生态用户揭示如何通过Home Assistant这座"…...

手把手教你用Xilinx FPGA实现万兆以太网UDP传输(基于XC7K325T开发板)

基于Xilinx FPGA的万兆以太网UDP传输实战指南(XC7K325T开发板) 在高速数据传输领域,万兆以太网已成为工业自动化、数据中心和科研实验的关键基础设施。本文将带领读者从零开始,在Xilinx Kintex-7系列XC7K325T开发板上实现完整的UD…...

开源硬件监控工具全解析:守护你的电脑健康

开源硬件监控工具全解析:守护你的电脑健康 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor 在数字时代,电脑…...

Pi0模型优化升级:从演示模式到实际推理的性能提升方案

Pi0模型优化升级:从演示模式到实际推理的性能提升方案 1. 项目背景与现状分析 Pi0作为一款视觉-语言-动作流模型,在通用机器人控制领域展现出独特价值。当前版本虽然提供了直观的Web演示界面,但在实际部署中仍存在一些性能瓶颈:…...

RD-Agent:AI驱动研发自动化的技术架构与实践解析

RD-Agent:AI驱动研发自动化的技术架构与实践解析 【免费下载链接】RD-Agent Research and development (R&D) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of R&D are mainly focused o…...

颠覆式照片管理:5大AI引擎重构你的数字记忆库

颠覆式照片管理:5大AI引擎重构你的数字记忆库 【免费下载链接】photoprism Photoprism是一个现代的照片管理和分享应用,利用人工智能技术自动分类、标签、搜索图片,还提供了Web界面和移动端支持,方便用户存储和展示他们的图片集。…...

Lingbot-Depth-Pretrain-VitL-14:驱动AIGC内容创作的深度感知新引擎

Lingbot-Depth-Pretrain-VitL-14:驱动AIGC内容创作的深度感知新引擎 最近在玩AIGC的时候,你是不是也遇到过这样的烦恼?让AI画一个房间,结果家具都飘在空中,透视关系乱七八糟;想生成一个带景深效果的人像&a…...

AI 如何解决苹果 Universal Control 断联问题记录

最近我解决了一个很有代表性的家庭网络问题。表面上看,它只是一个很小的体验问题:我想用一套键盘鼠标,同时控制两台笔记本和一台 Mac mini。我用的是苹果的 Universal Control。理论上,这是苹果生态里非常优雅的功能:一…...

使用windows环境的云服务器为域名申请certbot免费SSL证书

作者:一位刚刚走完全程的实践者 适用场景:购买了 Windows ECS 云服务器和域名,需要为微信小程序配置 HTTPS(SSL 证书)的新手 第一阶段:准备工作(避免走弯路) ✅ 你需要准备 阿里云…...

Rust的匹配模式优化

Rust的匹配模式优化:提升代码效率与可读性 Rust作为一门注重安全与性能的系统级编程语言,其强大的模式匹配功能一直是开发者喜爱的特性之一。模式匹配不仅让代码逻辑更加清晰,还能通过编译器的优化显著提升运行效率。本文将深入探讨Rust匹配…...

一手实测首个龙虾模型:长路径任务不失误,一人包揽全栈开发

克雷西 发自 凹非寺量子位 | 公众号 QbitAI终于,“养虾人”们也有自己的专属模型了。就在今天,智谱稍早前开始内测的神秘模型Pony-Alpha-2终于揭开了真实身份——全球首个“龙虾特供”模型GLM-5-Turbo。而且为了让你更方便地吃虾,这次智谱还专…...

直播预告|OpenClaw 架构拆解:单体 Agent 如何走向社交网络与群体智能

点击蓝字关注我们AI TIME欢迎每一位AI爱好者的加入!01内容简介02观看地址A微信视频号直播点击预约AI TIME 视频号直播BBilibili直播进入Bilibili直播间观看,提问有可能会被选中由讲者回答!欢迎关注AITIME论道 Bilibili 观看更多讲者回放&…...

mysql之数字函数

当然,以下是一些常用的 MySQL 数学函数的详细介绍和示例,包括调用这些函数后的结果。 ABS(x) 返回 x 的绝对值。 SELECT ABS(-42); -- 结果: 42CEILING(x) 或 CEIL(x) 返回大于或等于 x 的最小整数值。 SELECT CEILING(42.7); -- 结果: 43FLOOR(x) 返回小…...

JavaWeb开发:Servlet核心技术全解析

好的,我们来系统性地梳理一下Java Web开发的基础知识,并深入理解Servlet的核心技术。Java Web开发基础HTTP协议基础:Web应用的本质是基于HTTP协议的请求-响应模型。客户端(通常是浏览器)发送一个HTTP请求到服务器。服务…...