Giter VIP home page Giter VIP logo

gautomator's Introduction

GAutomator

Wetest

GAutomator(Game Automator) is an open source test automation framework for mobile games. Designed just like android uiautomator, GAutomator also includes ui automator functions. GAutomator interacts with engine elements such as GameObject(GameObjects are the fundamental objects in Unity that represent characters, props and scenery) . GameObject-based approach will not suffer from device resolution adaptation problems so that a single testing script is able to be executed on various devices.

SGameDrawing

Usage

  1. integrate your game with GAutomator SDK as docs
  2. write your iOS or Android testing scripts( see GAutomatorAndroid and GAutomatorIos for details)

GAutomatorAndroid

python test project for games on Android(with Unity/UE4 UI interaction)

GAutomatorIos

python scripts library for games on iOS(with Unity UI/UE4 interaction, however, different engines need to be configured the environment separately)

GAutomatorSDK

SDK source code . In order to interact with Game Engine Elements, the SDK is required to be integrated to game.

wt-wda

A project based on WebDriverAgent used for iOS testing.

Contact

For more information about contributing issues or pull requests, Issues,your can also contact(QQ:800024531)


GAutomator

Wetest

GAutomator是一个针对手游的UI自动化测试框架。设计理念与使用方式,类似于Android的UIAutomator。GAutomator以引擎中的元素为操作对象(如Unity中的GameObject),通过操作GameObject实现UI自动化测试。基于GameObject的方式,不存在手机分辨率适配的问题,一份脚本能够运行在不同手机之上。基于GameObject的另外一个优点为鲁棒性较强,游戏的UI界面经常发生变化,GameObject变化频率相对较低。

SGame Drawing

基本使用步骤

  1. 集成GAutomator SDK到游戏中,参照docs
  2. 编写Android或者iOS的python自动化脚本实现游戏交互(参照GAutomatorAndroid以及GAutomatorIOS中的说明)

GAutomatorAndroid

针对android游戏的Python测试工程。(目前支持Unity与UE4引擎的交互)

GAutomatorIos

针对iOS游戏的Python库。(目前支持Unity引擎交互,但不同引擎需分别配置环境)

GAutomatorSDK

GAutomator SDK的源码。为了实现测试脚本或工具与游戏引擎的交互,需要将GAutomator SDK集成到游戏包中。

wt-wda

一个基于WebDriverAgent的工程,用于iOS自动化测试。

联系

bug,需求或使用过程中的疑问均可直接发布在Issues,有专人负责回答。也可直接联系wetest助手(800024531)

gautomator's People

Contributors

codeskyblue avatar david-pzk avatar legendkan avatar prife avatar rhna avatar sergiotian avatar tianshanfz avatar wukenaiehsos1 avatar wukenaihe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gautomator's Issues

能否支持FairyGUI?

FairyGUI编辑界面非常方便,经过初步测试(使用UGUI的包),能够获取到组件,但是点击不成功。

2017-04-11 20:57:22,352 - INFO - manager.py:104 - wpyscripts.manager - None
2017-04-11 20:57:22,353 - INFO - manager.py:106 - wpyscripts.manager - host: 127.0.0.1 port: 53001

2017-04-11 20:57:22,502 - DEBUG - uiautomator_manager.py:34 - wetest - Start UIAutomator
2017-04-11 20:57:25,511 - DEBUG - uiautomator_manager.py:37 - wetest - Exit uiautomator
2017-04-11 20:57:25,730 - DEBUG - ShopUiTest.py:14 - wetest - Version Information : Engine = Unity3D 5.5.2f1,WeTest SDK = 1.3.2,UI=UGUI
2017-04-11 20:57:25,837 - DEBUG - ShopUiTest.py:17 - wetest - Scene :   UIScene
2017-04-11 20:57:25,858 - DEBUG - ShopUiTest.py:20 - wetest - Button : GameObject /UIPanel/mainFrame/btnMain Instance = -314
2017-04-11 20:57:26,063 - DEBUG - ShopUiTest.py:22 - wetest - Button2 : GameObject /UIPanel/mainFrame/btnSettings Instance = -346

FairyGUI网址:http://www.fairygui.com/

Android系统UI控件如何处理?

咨询下,Unity 游戏中出现Android UI控件,如Android的Dialog,GAutomator提供的API都无效了,有建议或解决方案么? tkx

执行main报错

堆栈:
File "E:/HBWork/GAutomator/main.py", line 199, in main
_run()
File "E:/HBWork/GAutomator/main.py", line 128, in _run
prepare = _prepare()
File "E:/HBWork/GAutomator/main.py", line 107, in _prepare
lanuch_result = _native_prepare()
File "E:/HBWork/GAutomator/main.py", line 71, in _native_prepare
device = manager.get_device()
File "E:\HBWork\GAutomator\wpyscripts\manager.py", line 58, in get_device
ui_device = uiauto.get_uiautomator()
File "E:\HBWork\GAutomator\wpyscripts\uiautomator\uiautomator_manager.py", line 57, in get_uiautomator
port=_init()
File "E:\HBWork\GAutomator\wpyscripts\uiautomator\uiautomator_manager.py", line 49, in _init
_init_uiautomator()
File "E:\HBWork\GAutomator\wpyscripts\uiautomator\uiautomator_manager.py", line 32, in _init_uiautomator
print(adb.cmd_wait("push",uiautomator_stub_path,"/data/local/tmp"))
File "E:\HBWork\GAutomator\wpyscripts\common\adb_process.py", line 70, in cmd_wait
cmd = self.raw_cmd(*args)
File "E:\HBWork\GAutomator\wpyscripts\common\adb_process.py", line 81, in raw_cmd
return subprocess.Popen(cmd_line, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "C:\Python27\lib\subprocess.py", line 390, in init
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 595, in _execute_child
args = list2cmdline(args)
File "C:\Python27\lib\subprocess.py", line 262, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'NoneType' is not iterable

自动记录和回放InputField

您好,问下关于在wiki中的自动录制与回放中,InputField值的记录与回放如何解决?如何在录制文件.txt中加入InputField的txt信息,然后在回放时实现自动赋值。

crashmonitor

我想问一下打包的插件中libcrashmonitor是干嘛的,能不能给个demo展示一下这个是怎么用的?

根据教程写的代码报错,求指导

2017-05-16 10:21:58,053 - INFO - manager.py:104 - wpyscripts.manager - None
2017-05-16 10:21:58,053 - INFO - manager.py:106 - wpyscripts.manager - host: 127.0.0.1 port: 53001
Traceback (most recent call last):
File "E:/svn/python/GAutomator/sample_test.py", line 6, in
from testcase.tools import *
File "E:\svn\python\GAutomator\testcase\tools.py", line 12, in
from wpyscripts.tools.baisc_operater import *
File "E:\svn\python\GAutomator\wpyscripts\tools\baisc_operater.py", line 22, in
engine = manager.get_engine()
File "E:\svn\python\GAutomator\wpyscripts\manager.py", line 107, in get_engine
get_engine.instance = GameEngine(hostip, local_port)
File "E:\svn\python\GAutomator\wpyscripts\wetest\engine.py", line 108, in init
self.socket = SocketClient(self.address, self.port)
File "E:\svn\python\GAutomator\wpyscripts\common\socket_client.py", line 23, in init
self.socket.connect((self.host, self.port))
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 10061]

SDK监听的服务端口可以自定义么

集成的Wetest SDK监听的服务端口可以自定义,我有多个APP交互测试,如果每个APP启动后都监听同一个端口,很容易因为端口监听绑定冲突导致app crash

wpyscripts.common.wetest_exceptions.WeTestSDKError: Recv Data From SDK timeout

运行自己写的代码报错
Traceback (most recent call last):
File "/Users/h/自动化相关/GAutomatorTest/wpyscripts/KoaTest/test.py", line 42, in
version=engine.get_sdk_version()
File "/Users/h/自动化相关/GAutomatorTest/wpyscripts/wetest/engine.py", line 119, in get_sdk_version
ret = self.socket.send_command(Commands.GET_VERSION, 1)
File "/Users/h/自动化相关/GAutomatorTest/wpyscripts/common/socket_client.py", line 80, in send_command
raise WeTestSDKError("Recv Data From SDK timeout")
wpyscripts.common.wetest_exceptions.WeTestSDKError: Recv Data From SDK timeout

Documentation in English

Do we have tutorial instructions in english? I want to try out your solution However I only understand english

请教:GAutomator中能否实现录制/回放的功能?

GAutomator中能否实现录制/回放的功能?类似于MonkeyRunner中的录制功能(录制完后可生成一段脚本,并进行回放)
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

device = mr.waitForConnection()
recorder.start(device)

今天突然运行报错

之前用这个已经写完了主线任务的脚本,跑着也没啥问题,今天突然就运行报错了,报错信息如下

ed2762cc-43e8-4667-827f-8ae46b953bed
用wetest.apk那个小demo跑了一下也是一样的报错,求拯救!

demo无法运行,游戏已经拉起,但无法运行demo

wutianyang$ python sample.py
2018-03-21 16:57:47,722 - INFO - manager.py:104 - wpyscripts.manager - None
2018-03-21 16:57:47,722 - INFO - manager.py:106 - wpyscripts.manager - host: 127.0.0.1 port: 53001

2018-03-21 16:57:47,756 - DEBUG - uiautomator_manager.py:35 - wetest - Start UIAutomator
2018-03-21 16:57:50,764 - DEBUG - uiautomator_manager.py:38 - wetest - Exit uiautomator
Traceback (most recent call last):
File "sample.py", line 196, in
main()
File "sample.py", line 190, in main
test_interaction()
File "sample.py", line 33, in wrapped
enter = engine.find_element(button)
File "/Users/wutianyang/Desktop/GAutomator-master/wpyscripts/wetest/engine.py", line 155, in find_element
ret = self.socket.send_command(Commands.FIND_ELEMENTS, [name])
File "/Users/wutianyang/Desktop/GAutomator-master/wpyscripts/common/socket_client.py", line 111, in send_command
raise e
wpyscripts.common.wetest_exceptions.WeTestSDKError: recv length is None?

模拟器是genymotion,在模拟器打开了demo,然后运行sample.py 显示此异常

click 失效

1
2
如果将raise_equip_level.py 21行注释掉,开启22行,手机画面停在 interaction 该click是有效的, 请问 my_app.apk 为何没有期待的效果(在指定element点击了一下)?

新入游戏测试的小白一个,求指导

感谢作者提供这么好的资源,学习中.小白求指点,利用GAutomatorView获取游戏中的页面元素,是什么原理,有框架图 嘛?看了一下介绍里的原理图还是不了解,有更详细的嘛?了解一些简单的adb命令,但是只知道input坐标定位,至于获取元素就不知道了

iOS为什么不支持?

关于iOS的游戏自动化,为什么不支持?是因为底层用的XCTest没有比较好的集成方案?

遇到Crash,麻烦帮忙看看是什么问题

07-28 18:00:13.640: E/WeTestReport(12063): ****
07-28 18:00:13.640: E/WeTestReport(12063): EXCEPTION TYPE: Fatal signal 11 (SIGSEGV) code 1 (SEGV_MAPERR)
07-28 18:00:13.640: E/WeTestReport(12063): MESSAGE: at addr 00000000
07-28 18:00:13.640: E/WeTestReport(12063): thread (UnityMain),tid 6634
07-28 18:00:13.641: E/WeTestReport(12063): REGISTER DATA:
07-28 18:00:13.641: E/WeTestReport(12063): r0 ce3fe6e4 r1 00000000 r2 c47a001a r3 bacccccd
07-28 18:00:13.641: E/WeTestReport(12063): r4 c0d96540 r5 c0cbaf80 r6 00000000 r7 00000000
07-28 18:00:13.641: E/WeTestReport(12063): r8 caad1258 r9 cc5eaf70 sl c8a51310 fp ce3fe6d0
07-28 18:00:13.641: E/WeTestReport(12063): ip bacccccd sp ce3fe6d0 lr bacccccd pc c54021a8 cpsr 20070010
07-28 18:00:13.641: E/WeTestReport(12063): # EXCEPTION STACK:
07-28 18:00:13.641: E/WeTestReport(12063): #00 pc 0000b1a8
07-28 18:00:13.641: E/WeTestReport(12063): #1 pc 000dbccb
07-28 18:00:13.641: E/WeTestReport(12063): UNCAUGHT: True
07-28 18:00:13.641: E/WeTestReport(12063): CRASH TYPE: Native Crash
07-28 18:00:13.641: E/WeTestReport(12063): ***************************************************
07-28 18:00:13.871: I/ThermalEngine(765): handle_thresh_sig: SS Id SS-CLUSTER0-SP0, Read xo_therm_buf 43000mC
07-28 18:00:13.875: I/ThermalEngine(765): handle_thresh_sig: SS Id SS-CLUSTER1-SP0, Read xo_therm_buf 43000mC
07-28 18:00:13.889: A/google-breakpad(12067): -----BEGIN BREAKPAD MICRODUMP-----
07-28 18:00:13.889: A/google-breakpad(12067): V WebView:55.0.2883.91
07-28 18:00:13.890: A/google-breakpad(12067): O A arm 04 armv8l Xiaomi/gemini/gemini:7.0/NRD90M/V8.5.2.0.NAACNED:user/release-keys
07-28 18:00:13.890: A/google-breakpad(12067): P webview
07-28 18:00:13.890: A/google-breakpad(12067): G OpenGL ES 3.2 [email protected] (GIT@Ic27b94dfce)|Qualcomm|Adreno (TM) 530
07-28 18:00:13.915: A/google-breakpad(12067): H 12C00000 FFFF1000 0351 2DBF2000 697C7000 0C:FF 0D:88 0E:56 0F:4E 10:3A 11:3F 12:12 13:05 14:07 16:01 1C:03 1D:01
07-28 18:00:13.915: A/google-breakpad(12067): S 0 CE3FE6D0 CE3FE000 00002000

gameObject未显示

3
4

疑问1:如图3 Canvas/Panel/ 增加一kftest GameObject,打包后手机上看不到。
但调用
e = engine.find_element("/Canvas/Panel/kftest")
engine.click(e)
执行效果是有的,如图4所示。
疑问2:点击的位置没有按我所期待的那样在 Sample2 的右下角。不知道是否是与分辨率及 layout有关。

AndroidRobot 运行时错误

你好,
我将SDK集成到游戏然后编译出来的游戏,GAutomator只能看到控件的XPath,但是不能对控件进行操作,甚至点击固定坐标点都无法完成。查看log发现GAutomator有以下exception:

An exception was thrown by the type initializer for WeTest.U3DAutomation.AndroidRobot 
      at WeTest.U3DAutomation.CommandHandler.InjectTouchEvent()[0x00000] in <filename unknown>:0
      WeTest.U3DAutomation.Logger:w(String)
      WeTest.U3DAutomation.CommandHandler:InjectTouchEvent()
      WeTest.U3DAutomation.CommandHandler:HandleEvent()
      Dynamic.ThirdManager:HandleEvent()
      WeTest.U3DAutomation.U3DAutomationBehaviour:SubUpdate()
      WeTest.U3DAutomation.U3DAutomationBehaviour:Update()```

请问这是什么原因导致的?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.