【PyAutoGUI游戏自动化测试实战】:从零搭建高效自动化测试框架

python游戏自动化实战--游戏辅助软件冰山后的秘密 文章目录前言python游戏辅助制作常用方法总结 前言 本文记一次用python制作win10游戏辅助制作的实践,总结一些制作辅助常用的手段。为啥做辅助去了?这要从周末打游戏的时候说起。终于升级到90级了,可以去“考古”了,然而考古的过程枯燥无味,基本上就是重复以下过程: 找到相关npc 接取任务,放弃任务,直到找到红树林地点的任务 传送到红树林,根据任务中坐标找到地图中的相关坐标 打怪,掉落宝物 重新进入1步骤 可以看到,考古的过程的固定的模式。受到工作中自动化测试的启发,为什么不能将这一过程自动化呢 阅读详情

第一章:PyAutoGUI游戏自动化测试概述

PyAutoGUI 是一个跨平台的 Python 库,能够模拟鼠标移动、点击、键盘输入以及屏幕截图等操作,广泛应用于 GUI 自动化任务中。在游戏开发与测试领域,PyAutoGUI 可用于构建轻量级的自动化测试脚本,执行重复性操作、验证界面元素位置或检测特定图像的出现。

核心功能优势

  • 支持 Windows、macOS 和 Linux 多平台运行
  • 提供基于图像识别的元素定位能力
  • 无需依赖游戏源码即可实现外部控制

典型应用场景

在游戏测试中,PyAutoGUI 常用于:
  1. 自动完成新手引导流程验证
  2. 检测主界面关键按钮是否正常显示
  3. 批量执行登录登出操作以测试稳定性

基础代码示例

以下代码展示如何使用 PyAutoGUI 定位图像并进行点击操作:
# 导入库
import pyautogui
import time

# 等待游戏窗口启动
time.sleep(3)

# 在屏幕上查找“开始游戏”按钮的截图匹配
start_button = pyautogui.locateOnScreen('start_button.png', confidence=0.8)

if start_button:
    # 找到后移动鼠标并点击
    pyautogui.click(start_button)
    print("已点击开始游戏按钮")
else:
    print("未找到按钮图像")

技术限制说明

尽管 PyAutoGUI 易于上手,但也存在局限性:
特性说明
图像识别精度受分辨率和缩放影响,需调整 confidence 参数
执行速度操作需等待 UI 渲染,不适合高频交互场景
抗干扰能力弹窗或广告可能导致定位失败
graph TD A[启动游戏] --> B{检测主界面} B -->|成功| C[执行测试用例] B -->|失败| D[重试或报错] C --> E[生成日志]

第二章:PyAutoGUI核心功能与原理剖析

2.1 图像识别机制与模板匹配原理

图像识别的核心在于从像素数据中提取特征并进行模式比对。模板匹配是一种基础而高效的图像识别方法,通过滑动窗口在目标图像中逐区域计算与预设模板的相似度。
匹配算法流程
  • 输入源图像与固定尺寸的模板图像
  • 遍历源图像每个像素作为匹配起点
  • 计算局部区域与模板的相似性得分
  • 返回最高得分位置作为匹配结果
常用相似度度量方式
方法公式适用场景
平方差匹配 (SQDIFF)∑(T - I)²精确匹配
归一化互相关 (CCORR_NORMED)∑(T × I)/|T||I|光照变化环境
result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 返回最可能匹配位置
该代码使用OpenCV执行归一化互相关匹配,max_loc表示最佳匹配坐标,适用于界面元素定位等自动化场景。

2.2 鼠标与键盘操作的底层模拟技术

在自动化测试与系统控制领域,对鼠标和键盘的底层输入模拟是实现人机交互自动化的关键。操作系统通常提供专门的接口来注入输入事件。
Windows 输入模拟机制
Windows 平台通过 SendInput API 实现硬件级输入模拟,可精确控制键码、扫描码及事件时间戳:

INPUT input = {0};
input.type = INPUT_KEYBOARD;
input.ki.wVk = VK_RETURN;  // 虚拟键码:回车
input.ki.dwFlags = 0;      // 按下键
SendInput(1, &input, sizeof(INPUT));
该调用模拟用户按下回车键,wVk 指定虚拟键码,dwFlags 为 0 表示按下,设为 KEYEVENTF_KEYUP 则表示释放。
Linux 下的 uinput 机制
Linux 可通过 /dev/uinput 创建虚拟设备,向内核注入事件:
  • 打开 uinput 设备并配置设备属性
  • 写入 EV_KEY 事件(如 KEY_A)
  • 同步事件(EV_SYN)提交输入

2.3 屏幕坐标系统与区域定位实践

在自动化测试与UI交互中,屏幕坐标系统是实现精准控件定位的核心基础。通常采用左上角为原点的笛卡尔坐标系,横轴为X,纵轴为Y。
坐标系统基本概念
设备屏幕以像素为单位划分,(0,0)位于左上角,向右X增大,向下Y增大。例如,在1920×1080分辨率下,右下角坐标为(1919, 1079)。
区域定位示例代码

# 获取目标区域中心点
def get_center(x, y, width, height):
    return x + width // 2, y + height // 2

center_x, center_y = get_center(100, 200, 80, 60)
tap(center_x, center_y)  # 模拟点击操作
该函数计算矩形区域的中心坐标,适用于图像识别后点击目标。参数x、y为区域左上角起点,width和height为尺寸。
常见坐标映射场景
  • 从截图坐标转换到物理屏幕坐标
  • 多分辨率下的坐标适配策略
  • 旋转屏幕后的坐标变换矩阵应用

2.4 图像查找优化策略与置信度设置

在自动化图像识别过程中,优化查找策略和合理设置匹配置信度是提升准确率与执行效率的关键。通过调整算法参数,可有效减少误匹配与漏检。
置信度阈值的合理设定
置信度(confidence)用于衡量图像匹配的相似程度,通常取值范围为 0 到 1。过低的阈值易导致误识别,过高则可能无法匹配正常变化的图像。

result = ag.find_image('target.png', confidence=0.8)
上述代码中,confidence=0.8 表示仅当图像相似度达到 80% 以上时才视为匹配成功,适用于光照稳定、形变较小的场景。
多尺度与边缘优化策略
采用多分辨率搜索与边缘增强预处理,可显著提升复杂环境下的识别率。结合高斯模糊降噪与Sobel算子提取轮廓特征,增强模板匹配鲁棒性。
  • 优先使用灰度图进行比对,降低计算负载
  • 启用图像金字塔实现多尺度匹配
  • 动态调整ROI区域以缩小搜索范围

2.5 多分辨率适配与跨平台兼容性处理

在现代应用开发中,设备屏幕尺寸和操作系统的多样性要求系统具备良好的多分辨率适配与跨平台兼容能力。为实现一致的用户体验,需采用响应式布局与抽象化平台接口。
响应式布局策略
通过使用相对单位(如 `dp`、`rem`)和弹性布局模型(Flexbox 或 Grid),界面可自动适应不同分辨率。例如,在 Android 中定义资源目录:
<!-- res/layout-sw600dp/activity_main.xml -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <!-- 适配平板等大屏设备 -->
</LinearLayout>
该布局仅在最小宽度 ≥600dp 的设备上加载,确保 UI 元素合理排布。
跨平台兼容性方案
使用统一抽象层隔离平台差异,常见于 Flutter 或 React Native 架构。通过条件编译或运行时检测,调用对应平台 API,保障功能一致性。

第三章:游戏自动化测试框架设计思路

3.1 测试用例分层架构与模块划分

在现代自动化测试体系中,测试用例的分层架构是保障可维护性与扩展性的核心设计。通过将测试逻辑解耦为不同职责的模块,提升代码复用率并降低维护成本。
典型分层结构
  • 表现层:定义测试场景与流程,贴近业务需求
  • 服务层:封装接口调用或页面操作逻辑
  • 数据层:管理测试数据准备与清理
代码示例:Go 中的分层测试结构

func TestUserLogin(t *testing.T) {
    // 表现层:组织测试流程
    user := data.NewTestUser()          // 数据层
    client := service.NewAPIClient()    // 服务层
    resp, err := client.Login(user)
    assert.NoError(t, err)
    assert.Equal(t, 200, resp.StatusCode)
}
上述代码中,NewTestUser 负责构造测试数据,NewAPIClient 封装 HTTP 请求逻辑,测试函数仅关注流程编排,实现清晰职责分离。

3.2 图像资源管理与动态加载方案

在现代Web应用中,图像资源的高效管理直接影响页面性能和用户体验。为优化加载速度,采用按需加载(Lazy Load)策略成为关键。
动态加载实现逻辑
使用Intersection Observer监听图像元素进入视口的行为,触发真实图片加载:

const imageObserver = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src; // 从data-src赋值真实路径
      img.classList.remove('lazy');
      observer.unobserve(img);
    }
  });
});

document.querySelectorAll('img[data-src]').forEach(img => {
  imageObserver.observe(img);
});
上述代码通过延迟非关键图像的加载,减少初始请求体积。data-src属性存储实际图像URL,避免提前下载占位图。
资源分类与缓存策略
  • 静态图像:部署至CDN,启用长期缓存(Cache-Control: max-age=31536000)
  • 动态图像:添加内容指纹或时间戳,防止缓存 stale
  • 响应式图像:结合srcset与sizes属性,适配多端分辨率

3.3 异常场景检测与恢复机制设计

异常检测策略
系统通过心跳监测与超时重试机制识别节点异常。服务实例定期上报状态,控制中心依据时间窗口内缺失次数判定故障。
恢复流程设计
采用自动回滚与熔断降级双策略。当连续失败达到阈值,触发熔断器切换至备用链路:
// 熔断器状态机实现
type CircuitBreaker struct {
    FailureCount int
    Threshold    int
    State        string // "closed", "open", "half-open"
}

func (cb *CircuitBreaker) Call(service func() error) error {
    if cb.State == "open" {
        return fmt.Errorf("service temporarily unavailable")
    }
    if err := service(); err != nil {
        cb.FailureCount++
        if cb.FailureCount >= cb.Threshold {
            cb.State = "open" // 触发熔断
        }
        return err
    }
    cb.FailureCount = 0
    return nil
}
上述代码中,FailureCount记录失败调用次数,Threshold设定熔断阈值,State控制访问状态,实现故障隔离与自动恢复。

第四章:实战:构建高效游戏自动化测试框架

4.1 搭建可复用的测试脚本基础结构

在自动化测试中,构建可复用的脚本结构是提升维护效率的关键。通过模块化设计,将公共操作封装为独立函数,可在多个测试用例中重复调用。
通用测试基类设计
class BaseTest:
    def setup(self):
        self.driver = WebDriver()
    
    def teardown(self):
        self.driver.quit()

    def wait_for_element(self, locator, timeout=10):
        return WebDriverWait(self.driver, timeout).until(
            EC.presence_of_element_located(locator)
        )
该基类封装了浏览器初始化、资源释放和元素等待逻辑,所有测试用例继承此类即可共享配置。
参数化与配置分离
  • 使用 YAML 文件管理环境变量
  • 测试数据与脚本逻辑解耦
  • 支持多环境快速切换
此结构显著降低脚本冗余,提升跨项目复用能力。

4.2 实现游戏启动、登录与关卡进入自动化

在自动化测试流程中,实现游戏的启动、登录及关卡加载是核心前置步骤。通过脚本模拟完整用户路径,可有效验证客户端稳定性与服务端交互逻辑。
自动化流程设计
典型执行流程如下:
  1. 启动游戏进程并等待主界面加载完成
  2. 注入账号凭证并触发登录请求
  3. 等待角色初始化,并点击进入指定关卡
关键代码实现
def launch_and_login(game_path, username, password, level_id):
    # 启动游戏进程
    process = subprocess.Popen(game_path)
    wait_for_ui_element("login_button", timeout=30)

    # 自动填充登录信息
    type_text(username)
    type_text(password)
    click("login_button")

    # 进入指定关卡
    wait_for_ui_element("level_select", timeout=45)
    select_level(level_id)
    click("start_level")
该函数通过等待UI元素出现作为状态同步机制,wait_for_ui_element 确保操作时序正确,避免因加载延迟导致的脚本失败。参数 timeout 控制最大等待时间,提升容错性。

4.3 编写断言逻辑与结果验证流程

在自动化测试中,断言是验证系统行为是否符合预期的核心手段。合理的断言设计能有效提升测试的可靠性与可维护性。
断言的基本结构
断言通常基于实际结果与期望值的比对,常见于接口响应、数据库状态或UI元素呈现。

// 示例:Go语言中的HTTP响应断言
resp, _ := http.Get("https://api.example.com/user/1")
defer resp.Body.Close()

body, _ := io.ReadAll(resp.Body)
var user map[string]interface{}
json.Unmarshal(body, &user)

assert.Equal(t, 200, resp.StatusCode)           // 状态码验证
assert.Equal(t, "张三", user["name"])             // 字段值验证
上述代码通过 assert.Equal 验证状态码和用户姓名,确保接口返回正确数据。
验证流程设计
一个完整的验证流程应包含以下步骤:
  • 获取实际输出(如API响应、数据库记录)
  • 定义明确的期望值
  • 执行类型安全的比较操作
  • 记录失败信息以便调试

4.4 日志记录、截图上报与测试报告生成

在自动化测试执行过程中,完整的日志记录是问题追溯的关键。通过结构化日志输出,可清晰追踪每一步操作状态。
日志与截图集成上报
使用 logrus 记录关键事件,并在异常时自动触发截图保存:

log.WithFields(log.Fields{
    "step":    "login",
    "status":  "failed",
    "screenshot": "/screenshots/err_123.png",
}).Error("Login attempt failed")
上述代码通过字段标记步骤状态与截图路径,便于后续聚合分析。
测试报告自动生成
执行结束后,框架整合日志与截图生成 HTML 报告。使用模板引擎填充结果数据:
  • 用例总数、通过率、失败详情
  • 每条失败用例附带截图链接
  • 时间轴视图展示执行流程

第五章:总结与未来扩展方向

性能优化的持续演进
现代Web应用对加载速度的要求日益提升。采用代码分割(Code Splitting)可显著减少首屏加载时间。例如,在React项目中结合React.lazy与Suspense实现动态导入:

const LazyComponent = React.lazy(() => import('./HeavyComponent'));

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>} >
        <LazyComponent />
      </Suspense>
    </div>
  );
}
微前端架构的实际落地
大型团队协作中,微前端成为解耦的关键方案。通过Module Federation,多个独立构建的应用可以共享组件与状态。典型配置如下:

// webpack.config.js
new ModuleFederationPlugin({
  name: 'host_app',
  remotes: {
    remoteApp: 'remote_app@https://remote-domain.com/remoteEntry.js'
  },
  shared: ['react', 'react-dom']
});
  • 支持跨团队独立部署
  • 技术栈异构兼容
  • 降低主应用维护负担
可观测性的增强策略
生产环境的问题排查依赖完善的监控体系。前端可通过以下指标构建SLO:
指标类型采集方式告警阈值
FCPPerformanceObserver>1.5s
LCPweb-vitals库>2.5s
JS错误率全局error监听 + 上报>0.5%
流程图:错误上报链路
用户触发异常 → 捕获堆栈信息 → 脱敏处理 → 添加上下文(用户ID、版本号) → 发送至Sentry/自建平台 → 自动创建工单
pyautogui库详细教程,逐行注释(附项目实战:基于图像识别实现崩坏星穹铁道自动化测试) 本文包含了pyautogui的使用方法与常见问题指南,随文附带对游戏实现的自动化项目源码与说明文档 阅读详情

相关推荐

游戏测试专题,从零开始的自动化测试框架

在传统游戏测试中,主要分为两种方向的测试。一种是功能测试,即通过手工跑游戏的方式来验证功能的正确性。而另外一种是自动化测试,也就是测试开发,可以通过跟代码相结合的方式保证产品质量和测试效率

weixin_56502375的博客 5153

8款常见的自动化测试开源框架

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

2301_78843735的博客 1231

PyAutoGUI与Selenium自动化测试框架:从原理到实战的选型与组合策略

自动化测试是软件工程中提升效率、保障质量的关键实践,其核心原理在于通过脚本模拟用户操作,替代重复性手动测试。在技术实现上,主要分为基于坐标与图像识别的视觉模拟和基于DOM结构的精准操控两种路径。PyAutoGUI作为前者代表,通过操作系统级API模拟鼠标键盘输入,并依赖图像匹配技术,具备跨平台、跨应用泛化操作能力,尤其适合桌面软件、游戏及RPA流程自动化等场景。Selenium则作为Web自动化测试的事实标准,通过WebDriver协议与浏览器驱动通信,直接操控DOM元素,执行速度快、状态感知精准,是Web

weixin_32187037的博客 247

【Python自动化】PyAutoGUI在游戏测试中的应用

在日常游戏的稳定性测试挂机中,发现了一些机器在长时间挂机后的崩溃现象,导致游戏进程退回桌面,或在匹配界面挂机。此时可以借助pyautoui库实现自动点击开始游戏并重新匹配。

weixin_44456338的博客 2442

Python 工具库每日推荐【PyAutoGUI】

PyAutoGUI作为一个功能强大且易于使用的Python桌面自动化库,为开发者和自动化爱好者提供了一个极其有价值的工具。本文我们看到了PyAutoGUI在模拟人类操作、自动化重复任务方面的卓越表现。从简单的鼠标点击到复杂的图像识别和操作,PyAutoGUI都能够高效地完成任务。在实际应用中,PyAutoGUI被广泛用于办公自动化、软件测试、游戏脚本、数据采集等多个领域。它的Python实现使其易于集成到各种Python项目中,特别是在需要与图形界面交互的场景中,PyAutoGUI表现出色。

bobostudio1995的博客 1460

Python自动化实战:用PyAutoGUI打造Chrome恐龙游戏AI外挂

Python自动化是提升工作效率和探索智能控制的重要技术领域,其核心原理在于通过脚本模拟人类对计算机的交互操作。在工程实践中,图像识别与键盘模拟是实现自动化控制的两大关键技术,它们能赋予程序“视觉”和“操作”能力,广泛应用于软件测试、数据采集和游戏辅助等场景。本文以经典的Chrome离线恐龙游戏为具体应用对象,深入探讨如何利用PyAutoGUI库,结合屏幕截图、模板匹配等图像识别方法,实时检测游戏中的仙人掌与翼龙障碍物,并自动触发跳跃或下蹲指令,从而构建一个完整的、基于视觉反馈的自动化控制解决方案。通过这一

weixin_34348805的博客 364

3步实现游戏自动化点击测试,PyAutoGUI入门到精通速成法

快速掌握游戏自动化测试PyAutoGUI,3步实现精准点击测试。适用于重复操作验证、游戏功能检测等场景,通过图像识别与坐标定位完成自动化控制,提升测试效率。方法简单易上手,支持跨平台运行,值得收藏。

LearnFlow的博客 1271

Python自动化脚本:微信小田田点地鼠游戏辅助实战

Time模块提供了各种时间相关的函数,包括时间的获取、格式化和延时操作。在自动化领域,延时功能尤为重要,因为它可以帮助模拟用户操作的节奏,例如模拟点击间隔时间。Time模块提供的函数可以在执行操作之间创建延迟。以下是一个简单的示例代码,展示如何使用来控制两次点击之间的时间间隔。# 启动浏览器驱动,打开网页(此处省略具体代码)# 定位要点击的元素# 第一次点击# 等待2秒# 第二次点击# 关闭浏览器(此处省略具体代码)

weixin_36122351的博客 1265

【游戏自动化测试避坑指南】:90%新手都会犯的PyAutoGUI使用错误

解决游戏自动化测试常见难题,本文详解PyAutoGUI在实际应用中的正确用法。涵盖图像识别、坐标定位、异常处理等关键技巧,适用于重复任务与回归测试场景。避开90%新手易犯的错误,提升脚本稳定性与执行效率,值得收藏。

CompiTide的博客 1239

PowerDesigner16.5下载和安装教程

一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3....

cicong2374的博客 10万+

周志华《机器学习》课程系列笔记——目录导航页

最近自学机器学习课程,注意到了南京大学周志华老师的课程。我是在学堂在线平台观看的,注意到b站上也有相应视频,但b站上并未获得授权,随时有消失的可能。周志华老师的网络教学视频中,与其西瓜书相比确实少了一些内容。但幸运的是,缺失的内容实际上对于初学者来说并不会产生太大影响。目前这一笔记也遵循视频内容,相比西瓜书中也会有一些缺失,敬请谅解。可能以后如果有机会和时间,我会再阅读周志华老师的书籍将缺失内容补全。一切内容敬请关注我的个人Page页面。

Sinocifengs的博客 1675

游戏版本迭代太频繁?PyAutoGUI自动化回归测试体系一键搞定

游戏版本迭代频繁?掌握游戏自动化测试 PyAutoGUI 高效方案,适用于回归测试与功能验证。通过脚本模拟操作,提升测试效率与稳定性,降低人力成本。一键运行,覆盖多场景,值得收藏。

BytePulse的博客 1151

vue3 - 详细实现用户收货地址识别解析“姓名/手机号/省市区/街道/乡镇村庄“关键字,用户复制粘贴一段含有姓名电话/详细地址的文字文本信息,vue3自动识别拆分并填入到对应表单字段中,详细示例代码

vue3,nuxt3,快递地址读取,收货地址解析、快递地址解析、物流地址解析自动识别,收货地址解析,从发货地址中拆出姓名电话地址,根据粘贴的字符串提取姓名地址,vue3地址信息自动识别,ts,vue3智能识别地址,提取姓名电话地址信息,自动识别出省市区街道姓名手机号等,根据文本自动解析出收货信息,怎么识别文本中的手机号,粘贴板地址识别,地址智能识别,如何识别收货地址中的关键字,粘贴一段文字后,自动识别到姓名/手机号/收货地址,vue3仿淘宝地址智能识别解析实现,省市区街道智能解析,vue3收货地址,识别地址

✅ 精选推荐文章 5499

为什么顶尖游戏公司都在用PyAutoGUI做回归测试?真相曝光

掌握游戏自动化测试PyAutoGUI,高效解决回归测试耗时难题。适用于UI检测、多场景自动执行,结合图像识别精准定位元素,大幅提升测试效率与稳定性。跨平台易集成,值得收藏,点击了解实战技巧。

PoliSeed的博客 755

Android11.0(R) MTK 平台开机logo动态替换(by logo.bin方式)

实现的效果 客户提供一张格式为 bmp 的开机logo,在 linux 环境下执行制作 logo.bin 脚本文件, apk 拷贝 logo.bin 文件替换系统原有的bin,然后重启 logo 自动更新。 原理分析 MTK 平台的充电图片和开机logo都是打包到 logo.bin 中的 对应的资源路径在源码 vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo 系统一般预制了很多分辨率文件夹,实际通过 BOOT_LOGO 来确定打包那一个

cczhengv 4580

深度强化学习 | 详解基于价值的强化学习DQN算法(附Pytorch实现)

深度Q网络DQN的核心原理是通过经验回放池和目标网络技术拟合高维状态空间,是Q-Learning算法的深度学习版本,本文分析DQN的基本算法,并给出训练实例和实际案例

FRIGIDWINTER的博客 4977

从崩溃到稳定:基于PyAutoGUI的游戏兼容性测试全流程解析

解决游戏兼容性测试难题,本文详解基于PyAutoGUI的游戏自动化测试全流程。涵盖多平台适配、图像识别定位与异常处理机制,提升测试稳定性与覆盖率。从崩溃分析到自动化回放,助力高效验证,值得收藏。

LearnPlex的博客 903

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5758

为什么顶尖游戏公司都在用PyAutoGUI?这4个隐藏优势你必须知道

掌握游戏自动化测试新利器,PyAutoGUI正被顶尖公司广泛采用。本文揭示其在UI交互、跨平台兼容、快速脚本编写和无需源码介入四大隐藏优势,详解如何高效应用于游戏功能回归与压力测试。了解PyAutoGUI如何提升测试效率,值得收藏。

VarFlow的博客 1021

C#客户端对接工厂MES的方法

本文介绍了使用C#实现WebApi客户端与工厂MES系统交互的方法。主要包括四个步骤:1)配置工控机IP地址;2)获取服务器URL;3)创建HttpHelper帮助类实现单例模式HttpClient,提供异步POST请求方法;4)通过实例化帮助类实现设备状态数据的JSON格式发送与接收。该方案采用异步通信方式,支持超时处理,能够满足大多数MES系统交互需求,帮助工程师快速完成设备与MES系统的数据对接。文中给出了核心代码片段和完整的数据交互流程示例。

weixin_39832501的博客 261

Android 15.0 app进程保活白名单功能实现

在15.0的系统rom产品开发中,在某些重要的app即使进入后台,产品需求要求也不想被系统杀掉进程,需要app长时间保活,就是app进程保活白名单功能的实现, 所以需要在系统杀进程的时候不杀掉白名单的进程,接下来就看怎么样来实现这些功能

安卓兼职framework和app工程师的博客 636

PyAutoGUI精准控制游戏操作:实现自动化挂机测试的底层逻辑

掌握游戏自动化测试PyAutoGUI,实现高效挂机测试方案。通过图像识别与鼠标键盘模拟,精准控制游戏行为,适用于重复任务、功能验证等场景。提升测试效率,降低人工成本,稳定可靠,值得收藏。

LearnPlex的博客 1156

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python | pyautogui,一个超酷的 Python 库!

Python的pyautogui库是一款强大的自动化GUI操作工具,可以帮助开发者轻松实现各种自动化任务,从模拟鼠标键盘操作到屏幕截图和识别,功能丰富强大。本文将深入探讨pyautogui库的各种功能和用法,结合详细的描述和丰富的示例代码,带领大家全面了解这个工具的使用方法和实际应用场景。

csdn_xmj的博客 1464

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Pyautogui官方用户手册:自动化GUI操作的利器

Pyautogui官方用户手册:自动化GUI操作的利器 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 Pyautogui官方用户手册是一个开源项目,专为Pyautogui库的用户提供了一份详尽的资源。Pyautogui是一个强大的Python库,专注于GUI自动化。通过模拟鼠标和键盘操作,它使得自动化各种图形用户界面任务变得轻而易举,如自动点击、输入文字、拖拽等。 项...

gitblog_06710的博客 409

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pyautogui如何识别图片并跟踪,附代码示例

以下是关于 pyautogui 如何识别图片并跟踪的相关信息及代码示例:pyautogui 可以通过 locateOnScreen 函数在屏幕上查找指定的图片。在使用 locateOnScreen 函数时,可以设置 confidence 参数来调整匹配的精度。希望以上内容对您有所帮助。

weixin_45498884的博客 2752
上一篇: 仓储机器人Python控制进阶指南:PID参数调优的黄金法则与实战案例
下一篇: 为什么99%的物流系统都慢?Python异步处理轨迹数据的3个关键优化点
Algorhythm
博客等级 码龄1年 148粉丝 2217原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值