如何在Android手机上使用poco框架进行测试

简介: 如何在Android手机上使用poco框架进行测试

前言



通过阅读本篇教程,你将会了解到:


  • 如何使用Poco对Android原生应用进行测试


Poco支持直接对任何Android原生应用(非游戏引擎、非webview)进行UI层次结构识别,用法上与Poco在其他平台上一模一样。


注:基于webview的应用比较特殊(如微信小程序或浏览器),请见文档Poco如何支持WebView检视


开始前的准备



在AirtestIDE的Poco Assistant面板中选择Android模式之后,AirtestIDE会开始自动向手机里安装Pocoservice.apkPocoservice-test.apk,部分型号手机需要手动点击确认安装才能顺利安装。


安装完成后,AirtestIDE会自动启动PocoService,它会定时抓取 Android上界面的层次结构信息,稍等片刻就可以在AirtestIDE界面中看到当前界面的UI层次结构树。


点击UI树上的任意节点,可以Log面板中看到该节点的所有属性,同时设备画面中将出现方框,把对应位置框选出来,方便定位节点。



如果Pocoservice启动失败,会导致Pocoservice.apk反复重装,此时可以检查以下几个方面:


  • 是否Android版本过低,Poco支持Android SDK API ≥ 19,即Android 4.4及以上
  • 请关闭PC或手机上连接的网络代理Proxy,否则可能导致连不上Poco
  • 可以尝试卸载手机中的2个Pocoservice相关的APK后,手工重新安装一遍,在poco\poco\drivers\android\lib目录下能够找到这两个APK
  • 部分vivo和oppo手机需要将手机设置-输入法设置中,把Yosemite输入法设置为默认输入法+当前输入法


一个使用计算器的例子



在这里我们提供一个使用Poco对一个计算器应用编写代码的例子,点这里下载示例App(calculator),并事先将此App安装到手机上。


按照刚才说的,在AirtestIDE中的Poco辅助窗下拉菜单中选择Android后,AirtestIDE将会自动启动Pocoservice,显示出当前的UI控件层次结构树。此后就可以在AirtestIDE中进行Poco语句的编写和录制了。


代码示例


下面这段代码例子将演示一个简单的功能:点击calculator的界面,实现一个1+1=2的运算验证。


from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco()
poco('com.google.android.calculator:id/digit_1').click()
poco('com.google.android.calculator:id/op_add').click()
poco('com.google.android.calculator:id/digit_1').click()
poco('com.google.android.calculator:id/eq').click()
result = poco('com.google.android.calculator:id/formula').get_text()
assert_equal(result, '2', '1+1=2 ^^')
复制代码


在这段代码中,我们使用poco = AndroidUiautomationPoco()初始化了一个poco对象,然后分别选取了1+1按钮进行点击操作后,使用get_text接口非常轻松地获取到了结果控件的值2,并且使用断言语句进行结果验证。


这个例子非常简单,更多poco用法和例子请见poco tutorial


同时连接多台手机使用Poco


在上一篇教程(四、如何在Android手机上进行测试(上)-多机协作)中,我们提到了一个脚本里可以连接多台Android手机,并且用set_current接口在手机之间切换:


from airtest.core.api import connect_device
dev1 = connect_device("Android://127.0.0.1:5037/serialno1")  # 连上第一台手机
dev2 = connect_device("Android://127.0.0.1:5037/serialno2")  # 第二台手机
set_current(1)
复制代码


假如我们在连上手机后,想要分别使用poco去获取控件和点击这两台不同的手机,此时需要分别初始化两个poco,就像这样:


from airtest.core.api import connect_device
dev1 = connect_device("Android://127.0.0.1:5037/serialno1")  # 连上第一台手机
poco1 = AndroidUiautomationPoco(dev1)
dev2 = connect_device("Android://127.0.0.1:5037/serialno2")  # 第二台手机
poco2 = AndroidUiautomationPoco(dev2)
set_current(1)  # 切到第二台手机
poco2('com.google.android.calculator:id/digit_1').click()
复制代码


同理,假如不使用connect_device接口连接手机,而是通过直接在命令行中传入--device来自动连接手机的话,不需要在代码里重复执行connect_device。此时只需要分别获取到设备对象,并且使用设备对象初始化poco就可以了:


from airtest.core.api import G
print(G.DEVICE_LIST)  # 假设当前总共有2台手机
poco1 = AndroidUiautomationPoco(G.DEVICE_LIST[0])
poco2 = AndroidUiautomationPoco(G.DEVICE_LIST[1])


相关文章
|
3月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
1月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
109 1
Metasploit Pro 4.22.8-20251014 (Linux, Windows) - 专业渗透测试框架
|
1月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
177 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
安全 Linux 网络安全
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
269 2
Metasploit Pro 4.22.8-2025091701 (Linux, Windows) - 专业渗透测试框架
|
2月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
372 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
安全 Linux 网络安全
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.88 (macOS, Linux, Windows) - 开源渗透测试框架
539 0
|
2月前
|
缓存 安全 Linux
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025082101 (Linux, Windows) - 专业渗透测试框架
165 0
|
4月前
|
Web App开发 开发框架 .NET
Playwright 自动化测试系列(6)| 第三阶段:测试框架集成​指南:参数化测试 + 多浏览器并行执行
Pytest 与 Playwright 集成可提升自动化测试效率,支持参数化测试、多浏览器并行执行及统一报告生成。通过数据驱动、Fixture 管理和并行优化,显著增强测试覆盖率与执行速度,适用于复杂 Web 应用测试场景。
|
3月前
|
SQL 安全 Linux
Metasploit Pro 4.22.8-2025073001 (Linux, Windows) - 专业渗透测试框架
Metasploit Pro 4.22.8-2025073001 (Linux, Windows) - 专业渗透测试框架
165 0
|
4月前
|
测试技术 API C++
Playwright 自动化测试系列(7)| 第三阶段:测试框架集成​​Page Object 模式
本课程详解Playwright测试框架中的Page Object模式,通过电商登录-下单实战演示PO架构设计与高级技巧,结合Pytest实现多用户测试。重点解析PO模式提升代码复用性、降低维护成本的核心价值,并提供常见问题解决方案,助力构建高可维护性的自动化测试体系。

热门文章

最新文章

下一篇
oss云网关配置