单设备初始化多个poco与多设备初始化poco

简介: 单设备初始化多个poco与多设备初始化poco

前言



Poco初始化这一块的内容,一直以来都是同学们非常容易出现问题的地方,所以今天我们单独把这部分的内容拎出来跟大家讲解一下,希望能减少大家对这块内容的疑惑。


1. 如何初始化不同的poco



首先我们都知道,Poco的类型分为很多种,那我们在实际测试过程中,该如何区分我们究竟要使用哪种Poco模式呢?


网络异常,图片无法展示
|


1)unity poco:Unity3D游戏专用


游戏都是由各种引擎开发的,unity引擎开发出来的游戏,我们测试时就要使用unity poco。不论是这个unity游戏被打成了ios包还是Android包,又或者Windows端的unity游戏,嵌入Poco-SDK后,都应该选择unity poco来测试该游戏应用:


# unity3D游戏的poco初始化脚本
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
复制代码


特别注意,游戏应用的Poco初始化,都应该放在游戏启动之后才能进行!!! (游戏启动之后,之前嵌入到游戏里面的poco服务才会启动,此时才能够初始化我们的游戏poco,获取游戏控件信息)


2)UE4 poco:UE4游戏专用


同unity游戏,UE4引擎开发的产品,我们可以使用 UE4 poco来进行初始化:


# UE4游戏的poco初始化脚本
from poco.drivers.ue4 import UE4Poco
poco = UE4Poco()
复制代码


3)Cocos-lua poco:Cocos2dx-lua游戏专用


# Cocos2dx-lua游戏的poco初始化脚本
from poco.drivers.std import StdPoco
poco = StdPoco()
复制代码


4)Cocos-js poco:Cocos2dx-js和Cocos-Creator游戏使用


# Cocos2dx-js和Cocos-Creator游戏的poco初始化脚本
from poco.drivers.cocosjs import CocosJsPoco
poco = CocosJsPoco()
复制代码


5)Android poco:Android原生应用专用


# Android原生应用的初始化脚本
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
复制代码


特别注意,Android原生应用的初始化,应该放在Android设备连接之后!!!(并且该设备已经完成开机启动,即Android系统正常运行状态下)


6)iOS poco:iOS原生应用专用


# iOS原生应用的初始化脚本
from poco.drivers.ios import iosPoco
poco = iosPoco()
复制代码


同Android设备,iOS原生应用的初始化,应该放在ios设备连接之后!!!(且设备的iOS系统是在正常运行的状态下)


7)QT poco


暂未启用,后续会更新~


8)Std-broker poco:白鹭(Egret)引擎专用


# 白鹭引擎的poco初始化脚本
from poco.drivers.std import StdPoco
from poco.utils.device import VirtualDevice
poco = StdPoco(15004, VirtualDevice('localhost'))
复制代码


2. 单设备初始化多个poco



相信大家经常遇到这种情况,我们需要测试1台Android设备上面的应用,这上面既有Android的原生应用,也有各种游戏应用,当我们从原生应用的操作,切换到游戏应用的操作时,就涉及在这一台设备上,进行多个poco的初始化操作,示例如下:


网络异常,图片无法展示
|


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
# 初始化Android poco
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
poco(text="poco").click()
sleep(5.0)
# 初始化unity poco
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
poco("btn_start").click()
sleep(2.0)
keyevent("HOME")
复制代码


当然,为了区分不同的poco,我们也可以在初始化的时候给poco设置不一样的变量名,比如:


from poco.drivers.unity3d import UnityPoco
unity_poco = UnityPoco()
unity_poco("btn_start").click()
复制代码


另外,我们在测试游戏的时候,也会经常遇到某些输入框并不是游戏控件,而是Android原生控件的情况,常见于游戏的账号登录,或者其它输入框等;这时候也需要实时切换我们所使用的poco模式:


网络异常,图片无法展示
|


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.unity3d import UnityPoco
unity_poco = UnityPoco()
unity_poco("Placeholder").click()
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
android_poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
android_poco("android.widget.EditText").set_text("hei输入输入")
android_poco("android.widget.Button").click()
sleep(1.0)
unity_poco("star_single").long_click()
复制代码


3. 多设备初始化poco



如在1个脚本中,涉及多台设备切换,则我们需要在切换设备之后,给新的设备也初始化对应的poco,然后再进行该设备的poco操作:


网络异常,图片无法展示
|


4. 进行poco初始化的时机



1)Android和iOS原生应用的poco


Android和iOS的原生poco,初始化脚本都应放置在设备连接脚本之后,即 auto_setup 接口、或者是其它设备连接接口之后:


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
# auto_setup为脚本初始化接口,不填入设备参数则默认取本地连接的第一台设备
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
复制代码


2)游戏对应的poco


游戏poco的初始化脚本应放置在游戏应用启动之后,且游戏启动之前需要先连接上我们的待测设备,所以整体顺序如下:


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
# 连接设备
auto_setup(__file__,logdir=True,devices=["Android://127.0.0.1:5037/emulator-5554"])
#启动应用
start_app("com.NetEase")
sleep(6.0)
# 初始化poco
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
poco("btn_start").click()
复制代码


5. pocoservice频繁重启的解决办法



1)关闭各种网络代理


如果开了网络代理的话,需要先 关闭各种代理和VPN ,否则可能会影响到poco通讯。


2)部分Android手机的设置问题


检查手机助手内是否对 pocoservice.apk  做了限制,例如在某版本的华为手机中需要开启 允许自启动允许后台活动 ,部分一加手机要把 pocoservice.apk电池优化 关掉,详情可以参考 “Android连接常见问题” 的文档 (airtest.doc.io.netease.com/IDEdocs/dev…


3)不能和uiautomator同时启动


不能和uiautomator同时启动,否则会相互冲突。


4)可以尝试重启


可以尝试 重启手机 看看是否会恢复。


小结



关于Poco的初始化内容就讲到这里啦

相关文章
|
Shell 测试技术
Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?
Airtest如何自动连接重启后的设备并继续执行自动化脚本呢?
310 0
|
移动开发 前端开发 算法
Selenium和Appnium、Airtest的底层原理
Selenium和Appnium、Airtest的底层原理
1372 0
|
搜索推荐 算法 数据挖掘
十个最全网站营销方法案例分析
本文探讨了10种网站营销策略:SEO优化提升搜索引擎排名;内容营销建立品牌信任;社交媒体营销扩大影响力;搜索引擎广告吸引目标用户;电子邮件营销促进销售;网站设计优化提升用户体验;移动端优化适应移动设备;数据分析驱动策略优化;视频营销吸引关注;合作伙伴营销扩展品牌覆盖。AokSend提供高效验证码发信服务,助力企业营销。选择合适策略,持续优化,以实现最佳营销效果。
|
11月前
|
JSON API 开发者
淘系买家秀API接口系列,示例代码返回值说明
淘宝买家秀API接口是阿里巴巴旗下的淘宝平台提供的一种接口服务,允许淘宝商家或开发者通过编程方式获取并展示淘宝商品的买家秀信息,包括买家上传的图片、视频、评论等内容。以下是对淘宝买家秀API接口的详细介绍:
|
弹性计算 负载均衡 数据库
阿里云轻量应用服务器全面解析:收费标准、产品优势及适用场景
在云计算领域,阿里云凭借其强大的技术实力和丰富的产品线,为用户提供了一系列高效、便捷的云服务器产品。其中,轻量应用服务器(Simple Application Server)作为面向个人开发者、中小企业等用户的入门级云产品,凭借其易用性、高性价比以及一站式服务体验,受到了广泛的欢迎。本文将全面解析阿里云轻量应用服务器的收费标准、产品优势以及适用场景,帮助用户更好地了解和选择这一产品。
阿里云轻量应用服务器全面解析:收费标准、产品优势及适用场景
|
边缘计算 人工智能 5G
5G 组网模式:NSA 与 SA 的比较与应用
5G 组网模式:NSA 与 SA 的比较与应用
4302 1
|
人工智能 IDE 测试技术
采用Visual Studio版本的AI编程助手
Visual Studio 是多平台IDE,用于构建Windows、Mac、Linux、iOS和Android应用。安装Fitten Code插件可增强其功能,如智能补全、AI问答、代码生成、翻译、注释自动生成、代码解释和测试用例创建。通过扩展商店搜索安装Fitten Code,登录后体验上述特性。支持VS Code、JetBrains IDE、Visual Studio和Vim。访问[https://code.fittentech.com/](https://code.fittentech.com/)获取更多信息。
518 4
|
数据可视化 持续交付 开发工具
RAD技术解析:快速开发应用程序的秘诀
**快速应用开发(RAD)**是一种始于90年代的敏捷方法,旨在通过迭代原型和反馈加速高质量软件交付。由James Martin提出,它包括需求规划、界面设计、快速构建和持续优化四阶段,以提高质量、降低风险、增强灵活性、降低成本和提升客户满意度。工具如ZohoCreator支持RAD,通过可视化工具和低代码平台促进高效开发,实现快速迭代和市场适应,降低项目失败风险,提高用户满意度。
277 9
|
消息中间件 监控 Java
《轻松驾驭Kafka集群:Kafka-manager部署与测试全攻略》
【8月更文挑战第13天】在云原生与微服务架构下,Apache Kafka作为高性能消息队列系统被广泛应用。管理Kafka集群以确保数据稳定流转至关重要。Kafka-manager是一款简洁易用的监控与管理工具,深受开发者喜爱。本文介绍其部署与测试流程:确认Java环境、下载与启动Kafka-manager、配置连接Kafka集群参数、通过Web界面监控集群状态与消息流向,以及利用其监控功能检测系统健康状况。此外,还提及如何处理用户权限管理和集群扩展等问题。通过实际操作,Kafka-manager显著提升了Kafka集群的可见性与管理效率,是运维与开发工作中不可或缺的工具。
285 0
|
Linux
Linux tail命令该如何使用?这篇文章讲的十分详细!
Linux tail命令该如何使用?这篇文章讲的十分详细!
913 0