用 MemorySharp 打造自动化测试工具:模拟键盘鼠标实现 UI 回归测试
用 MemorySharp 打造自动化测试工具模拟键盘鼠标实现 UI 回归测试【免费下载链接】MemorySharpA C# based memory editing library targeting Windows applications, offering various functions to extract and inject data and codes into remote processes to allow interoperability.项目地址: https://gitcode.com/gh_mirrors/me/MemorySharpMemorySharp是一款基于 C# 的内存编辑库面向 Windows 应用程序提供读写远程进程内存、注入代码以及模拟键盘鼠标输入等能力。本文将教你如何用MemorySharp 打造自动化测试工具通过模拟键盘鼠标实现 UI 回归测试把重复枯燥的手工点击与输入变成一条命令即可执行的自动化脚本大幅提升测试效率与稳定性。无论你是测试新手还是想进阶的开发者都能从中获得一份完整的实践指南。一、MemorySharp 是什么C# 内存编辑库的核心能力MemorySharp 是一个开源、易用、功能强大的 C# 内存编辑库专为 Windows 平台设计。它的设计目标是提供安全、简洁的 API让开发者可以像操作普通对象一样操作远程进程。核心能力包括进程交互获取进程信息、检查是否被调试、操作 PEB内存交互读写各类数据、分配/释放内存、修改内存保护属性窗口交互枚举窗口、获取主窗口、修改窗口位置与大小键盘模拟向窗口发送按键、输入文字鼠标模拟移动光标、单击/双击、滚动滚轮汇编注入注入并执行汇编代码、远程调用函数模块与线程注入/卸载模块、创建与挂起线程所有功能都通过一个统一的入口类 MemorySharp.cs 暴露其中Windows属性就是本次 UI 回归测试的主角——WindowFactory.cs。二、为什么 UI 回归测试需要模拟键盘鼠标UI 回归测试的目的是确保改动代码后原有功能没有被破坏。它通常包含大量重复操作反复填写表单、点击按钮、滚动列表、验证弹窗。如果全靠人工执行会有三大痛点耗时一套用例动辄上百步手工执行耗费大量时间不稳定人眼容易疲劳操作步骤易遗漏、易出错成本高每次发版都要占用测试人员大量精力而通过 MemorySharp 模拟键盘鼠标你可以在不干扰用户操作的前提下把整条测试链路自动化程序替你输入文字、点击按钮、滚动页面再配合内存读取校验结果真正实现一键回归。这就是自动化测试工具最实在的价值。三、模拟键盘输入给任意窗口打字的 3 个方法MemorySharp 的键盘模拟非常贴心无需激活窗口也能输入。它通过PostMessage直接向目标窗口投递键盘消息用户完全可以一边干别的事一边让脚本在后台操作被测程序。核心实现在 MessageKeyboard.cs基类 BaseKeyboard.cs 则提供了三种常用方法方法作用适用场景Write(text)向窗口写入一整段文字表单填写、搜索框输入Press(key)按下某个键方向键移动、快捷键触发PressRelease(key)按下后立即松开敲击回车确认、F1 帮助等单击键Press(key, interval)按住并周期性重复长按方向键滚动、连发操作来看看最直观的写法摘自官方示例与测试用例 KeyboardTests.csvar scintilla sharp.Windows.GetWindowsByClassName(Scintilla).First(); // 向编辑区写入文字 scintilla.Keyboard.Write(Hello, World!); // 按住方向键向下每 20ms 触发一次持续 3 秒 scintilla.Keyboard.Press(Keys.Down, TimeSpan.FromMilliseconds(20)); Thread.Sleep(3000); scintilla.Keyboard.Release(Keys.Down);四、模拟鼠标操作移动、点击、滚轮的完整教程鼠标模拟由 SendInputMouse.cs 实现它基于 Windows 的SendInputAPI行为更接近真实鼠标能触发更完整的事件链。基类 BaseMouse.cs 提供的核心方法如下方法作用典型用法MoveTo(x, y)移动光标到窗口内坐标定位到目标按钮ClickLeft()/ClickRight()单击左键 / 右键点击按钮、打开菜单DoubleClickLeft()双击左键打开文件、选中词块ScrollVertically(delta)垂直滚动滚轮滚动长列表、翻页ScrollHorizontally(delta)水平滚动滚轮横向滚动条操作一个完整的点击窗口左上角示例来自 README 官方示例var window sharp.Windows.MainWindow; window.Activate(); // 将窗口置为前台 window.Mouse.MoveTo(0, 0); // 移动到窗口左上角 window.Mouse.ClickLeft(); // 单击左键注意MoveTo的坐标是相对于目标窗口的库内部会自动换算为屏幕绝对坐标见 BaseMouse.cs 的MoveTo实现无需你手动计算窗口位置非常省心。五、从 0 到 1 搭建 UI 回归测试脚本的 5 个步骤用 MemorySharp 搭建一套自动化 UI 回归测试脚本只需 5 步定位进程通过进程名或 PID 打开目标程序实例化MemorySharp对象获取窗口用 WindowFactory.cs 的MainWindow、GetWindowsByTitleContains(标题)或GetWindowsByClassName(类名)拿到目标RemoteWindow执行操作组合键盘与鼠标 API按测试用例的步骤依次模拟输入校验结果用ReadT()读取内存中的状态值或用窗口属性标题、大小判断操作是否生效输出报告记录每个步骤的成功/失败生成测试报告例如一套登录表单回归用例可以这样组织var sharp new MemorySharp(Process.GetProcessById(pid)); var win sharp.Windows.GetWindowsByTitleContains(登录).First(); win.Keyboard.Write(test_user); // 输入账号 win.Keyboard.PressRelease(Keys.Tab); // 切换到密码框 win.Keyboard.Write(passw0rd); // 输入密码 win.Mouse.ClickLeft(); // 点击登录按钮 var result sharp.Readint(addr); // 读取登录状态整套脚本可以封装成类放入 CI 流程中定时执行实现真正的无人值守回归测试。六、把回归测试嵌入 Git Flow 与 CI/CD 流水线自动化脚本写好后下一步是让它成为团队流程的一部分。把回归测试接入Git Flow分支管理模型可以让每次合并、每个发版都有自动化保障具体策略如下feature 分支合入develop前先跑一遍针对新功能的 UI 冒烟测试develop 分支每次合并后触发完整 UI 回归测试保证日常集成质量release 分支冻结功能后只做 bug 修复同时跑全量回归确保发布质量hotfix 分支修复紧急问题后回归测试重点覆盖受影响模块上图正是本项目采用的 Git Flow 分支策略详见 README.md 中的 Git flow 章节。将自动化测试工具接入这套流程后测试工作就从发布前的临时冲刺变成了日常开发的一部分回归风险被持续、自动地消化掉。七、新手避坑指南常见问题与最佳实践在使用 MemorySharp 做自动化测试时这 4 个经验能帮你少走弯路⚠️注意 32 位支持当前版本的 MemorySharp 主要支持 32 位开发测试前请确认目标程序与测试程序位数匹配以管理员身份运行模拟输入和内存读写涉及系统级 API建议以管理员权限运行测试程序避免权限不足及时释放资源MemorySharp实现了IDisposable记得用using包裹用完即释放先小后大先写一条最简单的输入文字 校验用例跑通全链路再逐步扩充用例集排查问题更快八、总结用 MemorySharp 打造自动化测试工具并不复杂窗口定位 模拟键盘 模拟鼠标 内存校验四个能力组合起来就能构建出覆盖表单、点击、滚动的完整 UI 回归测试方案。配合 Git Flow 与 CI/CD 流水线测试将从人力密集型工作升级为自动化质量防线。如果你想亲自上手实践可以克隆本仓库到本地参考 test/IntegrationTests 目录下的现成用例从修改 KeyboardTests.cs 开始你的第一个自动化脚本。动手试一次你会发现 UI 回归测试原来可以这么简单【免费下载链接】MemorySharpA C# based memory editing library targeting Windows applications, offering various functions to extract and inject data and codes into remote processes to allow interoperability.项目地址: https://gitcode.com/gh_mirrors/me/MemorySharp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

xpack架构剖析:XDecoder/XEncoder如何统一JSON/XML/BSON编解码

xpack架构剖析:XDecoder/XEncoder如何统一JSON/XML/BSON编解码

xpack架构剖析:XDecoder/XEncoder如何统一JSON/XML/BSON编解码 【免费下载链接】xpack convert json/xml/bson to c struct 项目地址: https://gitcode.com/gh_mirrors/xp/xpack xpack 是一个纯头文件(header-only)的 C 序列化库&…

2026/8/18 15:57:10 阅读更多 →
NCSA Mosaic 2.7 的开源遗产:它对现代Web的10大深远贡献

NCSA Mosaic 2.7 的开源遗产:它对现代Web的10大深远贡献

NCSA Mosaic 2.7 的开源遗产:它对现代Web的10大深远贡献 【免费下载链接】ncsa-mosaic NCSA Mosaic 2.7 项目地址: https://gitcode.com/gh_mirrors/nc/ncsa-mosaic NCSA Mosaic 2.7 是世界上最早的图形化网页浏览器之一,也是整个现代 Web 生态的…

2026/8/18 15:57:10 阅读更多 →
Nabla渲染引擎快速入门:5分钟跑通你的第一个Vulkan示例程序

Nabla渲染引擎快速入门:5分钟跑通你的第一个Vulkan示例程序

Nabla渲染引擎快速入门:5分钟跑通你的第一个Vulkan示例程序 【免费下载链接】Nabla Vulkan, OptiX and CUDA Interoperation Modular Rendering Library and Framework for PC/Linux/Android 项目地址: https://gitcode.com/gh_mirrors/na/Nabla Nabla渲染引…

2026/8/18 15:57:10 阅读更多 →

最新新闻

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南

老旧Mac如何免费升级最新macOS?OpenCore Legacy Patcher完整上手指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 如果你的Mac是2014年、2015年…

2026/8/18 16:30:59 阅读更多 →
5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程

5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程

5分钟快速上手Qwen3.5-9B-w4a16-asym-torchao-v0.17.0:AMD EPYC CPU推理入门教程 【免费下载链接】Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen3.5-9B-w4a16-asym-torchao-v0.17.0 Qwen3.5-9B-w4a16-asym…

2026/8/18 16:30:59 阅读更多 →
Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟

Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟

Goo-Engine 安装实录:3 个里程碑、4 个专属节点,把动漫渲染工期从 3 天压到 10 分钟 【免费下载链接】goo-engine Custom build of blender with some extra NPR features. 项目地址: https://gitcode.com/gh_mirrors/go/goo-engine Goo-Engine 是…

2026/8/18 16:30:59 阅读更多 →
PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍

PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍

PullToMakeSoup:Yalantis 出品的 iOS 动画下拉刷新组件完整介绍 【免费下载链接】PullToMakeSoup Custom animated pull-to-refresh that can be easily added to UIScrollView 项目地址: https://gitcode.com/gh_mirrors/pu/PullToMakeSoup 如果你正在寻找一…

2026/8/18 16:30:59 阅读更多 →
Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂

Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂

Sorting-Algorithms-Blender 项目结构全解析:sort_circle、sort_color、sort_scale、sort_combined 四大文件夹一文读懂 【免费下载链接】Sorting-Algorithms-Blender Sorting algorithms visualized using the Blender Python API. 项目地址: https://gitcode.co…

2026/8/18 16:30:58 阅读更多 →
深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系

深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系

深度解析SingGuard-NSFA-4B:一文读懂覆盖185种攻击风险的NSFA分类体系 【免费下载链接】SingGuard-NSFA-4B 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/SingGuard-NSFA-4B 随着AI Agent(智能体)开始自主调用工具、读写…

2026/8/18 16:29:58 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →