百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

这款开源测试神器,圆了我玩游戏不用动手的梦想

ccwgpt 2024-10-14 08:45 32 浏览 0 评论

作者:HelloGitHub-Anthony

一天我在公司用手机看游戏直播,同事问我在玩什么游戏?我和他说在看直播,他恍然大悟:原来如此,我还纳闷你玩游戏,咋不用动手呢。。。。一语惊醒梦中人:玩游戏不用动手,怎样才能做到玩游戏不用手呢?我要去 GitHub 上找找~

本期介绍的是 GitHub 上标星 5.4k 由网易开源和维护的开源项目:Airtest 一款基于 Python 的跨平台 UI 自动化测试框架,释放双手“玩”游戏、“耍”应用!

项目地址:https://github.com/AirtestProject/Airtest

所谓 UI 自动化就是让游戏和应用,按照预先设定的步骤自己动。可用来实现自动测试应用,也可以用来实现应用自动化。。。就像升级版按键精灵?

一、应用场景

首先这个项目适合所有读者,只要跟着本教程仅需会一点 Python 语法,就可以学会用 Airtest 解决一些重复性的工作,释放你的双手!比如:检测僵尸好友、批量点赞、刷游戏副本、自动化测试等等。

如果测试同学上手了 Airtest 就会赞不绝口,毕竟测试界面的每个按钮是否有效是一个机械性的任务,不应该让机械的操作浪费宝贵的时间,有了它可以轻松搞定“点点点”的测试需求。

另外 Airtest 对于普通使用者能做到最有意思的事情就是做 游戏自动化。例如,在游戏中经常会有许多固定模式的日常任务,通过 Airtest 可以让这些枯燥的日常任务,自动执行从而节省时间。对于阴阳师等游戏配合游戏自带的自动战斗经过调试我们甚至可以做到全自动游玩,让玩家彻底解放双手!

看到这里是不是跃跃欲试了呢?下面就跟着小编一起上手 Airtest 吧~

二、上手

安装:

$ pip install -U airtest

对于新手来讲,我个人推荐使用官方推出可视化编辑器 AirtestIDE,使用起来非常方便,一键快速连接安卓、iOS 等设备,同时支持图像识别与 UI 元素识别。

后面的教程也是采用 AirtestIDE 讲解,手机为 Android 系统。

1. 打开手机开发者模式

打开手机的设置界面,找到 关于手机 界面:

连续点击 版本号 栏目直到提示开发者模式已经打开:

然后根据机型不同,找到开发人员选项中,打开开发人员选项 -> USB 调试 -> “仅充电”模式下允许ADB调试,关闭 监控 ADB 安装应用

之后将我们的手机使用数据线与电脑连接起来。

注意:为了防止发生安全问题,不连接 AirtestIDE 时请关闭 USB 调试功能!

2. 连接安卓手机

启动 AirtestIDE 后会提示需要登录,这里可以直接点击 Skip 跳过。然后我们就能看到主界面啦:

当手机连接到电脑后,点击设备连接窗口刷新 ADB按钮后等待一会儿就能看见我们的手机:

点击 操作 栏的 connect 后即可连接手机。

第一次连接时在手机上会弹出认证提示,无特殊情况点击同意即可

之后就能看到我们手机画面:

同时鼠标可代替手指进行点击操作。

3. 实现自动访问 HG 官网

实现手机自动访问网站仅需要简单的 3 步:

1、在 Airtest 辅助窗 找到 touchtext

2、点击 touch 后在手机画面选择浏览器图标截图,生成如下代码:

3、选择 text 输入网址

最后点击 运行 按钮即可。

注意,此部分由于需要安装 yosemite 调试工具可能需要先运行几次才可成功,而且图像识别有一定概率会失败

同样,IDE 也支持录制动作,点击 Airtest 辅助窗 里的录像按钮即可:

之后使用鼠标操作手机,IDE 就会自动为我们生成脚本了。

4. 生成报告(测试人员最爱)

Airtest 可以非常方便的生成测试报告,只需要点击 IDE 上方的生成报告按钮:

即可自动生成全面的测试报告:

三、自动识别

在实际应用中,有些时候是图片识别无法完成或者存在困难的,这时我们可以利用 Poco 工具直接识别 UI 框架定位元素。

一个很简单的例子,自动打开 HG 的小程序并分享机器学习的内容:

from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco

poco = AndroidUiautomationPoco()

auto_setup(__file__)

poco(text="HelloGitHub").click()
poco(text="#机器学习").click()
poco(text="tutorials").click()
poco("android.widget.Button").click()

利用 IDE 的 Poco 录制功能可以很方便的自动生成上述代码,实际效果如下:

在应用当中巧妙地利用 Poco 可以节省很多图片识别时间以及应用背景不同时程序的稳定性。

四、结语

到这里 Airtest 的演示就结束啦!本文仅仅演示了 Airtest 最基本的功能。游戏自动化只是其中很小的一个功能,它主要还是用来做自动化测试。支持不同设备同时进行测试,但对于使用者而言有一定的上手门槛,感兴趣去的小伙伴可以去深入研究研究,但要注意方向呀~

最后,感谢您的阅读!这里是 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。您的每个点赞、留言、分享都是对我们最大的鼓励!

- END -

相关推荐

RACI矩阵:项目管理中的角色与责任分配利器

作者:赵小燕RACI矩阵RACI矩阵是项目管理中的一种重要工具,旨在明确团队在各个任务中的角色和职责。通过将每个角色划分为负责人、最终责任人、咨询人和知情人四种类型,RACI矩阵确保每个人都清楚自己...

在弱矩阵组织中,如何做好项目管理工作?「慕哲制图」

慕哲出品必属精品系列在弱矩阵组织中,如何做好项目管理工作?【慕哲制图】-------------------------------慕哲制图系列0:一图掌握项目、项目集、项目组合、P2、商业分析和NP...

Scrum模式:每日站会(Daily Scrum)

定义每日站会(DailyScrum)是一个Scrum团队在进行Sprint期间的日常会议。这个会议的主要目的是为了应对Sprint计划中的不断变化,确保团队能够有效应对挑战并达成Sprint目标。为...

大家都在谈论的敏捷开发&Scrum,到底是什么?

敏捷开发作为一种开发模式,近年来深受研发团队欢迎,与瀑布式开发相比,敏捷开发更轻量,灵活性更高,在当下多变环境下,越来越多团队选择敏捷开发。什么是敏捷?敏捷是一种在不确定和变化的环境中,通过创造和响应...

敏捷与Scrum是什么?(scrum敏捷开发是什么)

敏捷是一种思维模式和哲学,它描述了敏捷宣言中的一系列原则。另一方面,Scrum是一个框架,规定了实现这种思维方式的角色,事件,工件和规则/指南。换句话说,敏捷是思维方式,Scrum是规定实施敏捷哲学的...

敏捷项目管理与敏捷:Scrum流程图一览

敏捷开发中的Scrum流程通常可以用一个简单的流程图来表示,以便更清晰地展示Scrum框架的各个阶段和活动。以下是一个常见的Scrum流程图示例:这个流程图涵盖了Scrum框架的主要阶段和活动,其中包...

一张图掌握项目生命周期模型及Scrum框架

Mockito 的最佳实践(mock方法)

记得以前面试的时候,面试官问我,平常开发过程中自己会不会测试?我回答当然会呀,自己写的代码怎么不测呢。现在想想我好像误会他的意思了,他应该是想问我关于单元测试,集成测试以及背后相关的知识,然而当时说到...

EffectiveJava-5-枚举和注解(java枚举的作用与好处)

用enum代替int常量1.int枚举:引入枚举前,一般是声明一组具名的int常量,每个常量代表一个类型成员,这种方法叫做int枚举模式。int枚举模式是类型不安全的,例如下面两组常量:性别和动物种...

Maven 干货 全篇共:28232 字。预计阅读时间:110 分钟。建议收藏!

Maven简介Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。Maven是一个跨平台的项目管理工具。主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。仔...

Java单元测试框架PowerMock学习(java单元测试是什么意思)

前言高德的技术大佬在谈论方法论时说到:“复杂的问题要简单化,简单的问题要深入化。”这句话让我感触颇深,这何尝不是一套编写代码的方法——把一个复杂逻辑拆分为许多简单逻辑,然后把每一个简单逻辑进行深入实现...

Spring框架基础知识-第六节内容(Spring高级话题)

Spring高级话题SpringAware基本概念Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的。但是在实际的项目中,你的Bean必须要意识到Spring容器...

Java单元测试浅析(JUnit+Mockito)

作者:京东物流秦彪1.什么是单元测试(1)单元测试环节:测试过程按照阶段划分分为:单元测试、集成测试、系统测试、验收测试等。相关含义如下:1)单元测试:针对计算机程序模块进行输出正确性检验工作...

揭秘Java代码背后的质检双侠:JUnit与Mockito!

你有没有发现,现在我们用的手机App、逛的网站,甚至各种智能设备,功能越来越复杂,但用起来却越来越顺畅,很少遇到那种崩溃、卡顿的闹心事儿?这背后可不是程序员一拍脑袋写完代码就完事儿了!他们需要一套严谨...

单元测试框架哪家强?Junit来帮忙!

大家好,在前面的文章中,给大家介绍了以注解和XML的方式分别实现IOC和依赖注入。并且我们定义了一个测试类,通过测试类来获取到了容器中的Bean,具体的测试类定义如下:@Testpublicvoid...

取消回复欢迎 发表评论: